@acorex/modules 20.2.3 → 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 (159) hide show
  1. package/common/index.d.ts +16 -8
  2. package/document-management/index.d.ts +27 -24
  3. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BBGqLgJC.mjs → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs} +10 -10
  4. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BBGqLgJC.mjs.map → acorex-modules-auth-acorex-modules-auth-C8p1VeqM.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-auth-app-chooser.component-B7Nv62Jj.mjs → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-auth-app-chooser.component-B7Nv62Jj.mjs.map → acorex-modules-auth-app-chooser.component-CDKLbD_u.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-auth-login.module-DmEDBKqL.mjs → acorex-modules-auth-login.module-DGPRxnXo.mjs} +4 -4
  8. package/fesm2022/{acorex-modules-auth-login.module-DmEDBKqL.mjs.map → acorex-modules-auth-login.module-DGPRxnXo.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-master.layout-B8L2FPDN.mjs → acorex-modules-auth-master.layout-BNFGuQQs.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-auth-master.layout-B8L2FPDN.mjs.map → acorex-modules-auth-master.layout-BNFGuQQs.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BRJu8jom.mjs → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BRJu8jom.mjs.map → acorex-modules-auth-oauth-callback.component-B3sSFdOA.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-password.component-Bh0uhx6-.mjs → acorex-modules-auth-password.component-Dyox9sR4.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-auth-password.component-Bh0uhx6-.mjs.map → acorex-modules-auth-password.component-Dyox9sR4.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-password.component-FNLwhWMe.mjs → acorex-modules-auth-password.component-ln2kDKPR.mjs} +3 -3
  16. package/fesm2022/acorex-modules-auth-password.component-ln2kDKPR.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-auth-routes-xqc264U-.mjs → acorex-modules-auth-routes-7vr8T08D.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-auth-routes-xqc264U-.mjs.map → acorex-modules-auth-routes-7vr8T08D.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-two-factor.module-C8jrenEW.mjs → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-C8jrenEW.mjs.map → acorex-modules-auth-two-factor.module-D6XCUP_A.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-user-sessions.component-Cu1SCNnF.mjs → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-Cu1SCNnF.mjs.map → acorex-modules-auth-user-sessions.component-B5aBDmdR.mjs.map} +1 -1
  23. package/fesm2022/acorex-modules-auth.mjs +1 -1
  24. package/fesm2022/acorex-modules-calendar-management.mjs +1 -1
  25. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  26. package/fesm2022/acorex-modules-common.mjs +503 -235
  27. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  28. package/fesm2022/acorex-modules-content-management.mjs +57 -445
  29. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-conversation.mjs +119 -4
  31. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  32. package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
  33. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  34. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BvIGh15O.mjs → acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs} +862 -145
  35. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-ClgS3Q8D.mjs → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-ClgS3Q8D.mjs.map → acorex-modules-document-management-attachment-widget.component-CcWvTWv0.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-document-management-details-view.component-BmJB8bb8.mjs → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-document-management-details-view.component-BmJB8bb8.mjs.map → acorex-modules-document-management-details-view.component-BKNvUhdl.mjs.map} +1 -1
  42. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs +116 -0
  43. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +1 -0
  44. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs.map → acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-document-management-drive.component-R1V4W9u3.mjs → acorex-modules-document-management-drive.component-DutBXTtm.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-document-management-drive.component-R1V4W9u3.mjs.map → acorex-modules-document-management-drive.component-DutBXTtm.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C-9UNa_X.mjs → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C-9UNa_X.mjs.map → acorex-modules-document-management-large-icons-view.component-DX2_xsbq.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DL3PEFfv.mjs → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DL3PEFfv.mjs.map → acorex-modules-document-management-large-tiles-view.component-CshjCgG5.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-document-management-list-view.component-BGUDmglV.mjs → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-document-management-list-view.component-BGUDmglV.mjs.map → acorex-modules-document-management-list-view.component-DdLTVccZ.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs → acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs} +2 -2
  55. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BomZu2bT.mjs.map +1 -0
  56. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs.map → acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs.map} +1 -1
  58. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DXiQj-Hb.mjs → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs} +2 -2
  59. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DXiQj-Hb.mjs.map → acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs.map} +1 -1
  60. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-C8RZC3TM.mjs → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs} +2 -2
  61. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-C8RZC3TM.mjs.map → acorex-modules-document-management-small-icons-view.component-DG3AbQJO.mjs.map} +1 -1
  62. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B70rSvao.mjs → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs} +2 -2
  63. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B70rSvao.mjs.map → acorex-modules-document-management-small-tiles-view.component-Cx9jczo-.mjs.map} +1 -1
  64. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  65. 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
  66. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CLSHVjDE.mjs.map +1 -0
  67. package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map → acorex-modules-form-template-management-category.entity-BBjVWSJ_.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs → acorex-modules-form-template-management-permission-definition.provider-I8BY9RVh.mjs} +2 -2
  70. 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
  71. package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs → acorex-modules-form-template-management-settings.provider-B8ip0Ou_.mjs} +2 -2
  72. 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
  73. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs → acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs} +2 -3
  74. package/fesm2022/acorex-modules-form-template-management-template-picker.component-BNM3RyDv.mjs.map +1 -0
  75. 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
  76. 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
  77. package/fesm2022/{acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs → acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs} +10 -14
  78. package/fesm2022/acorex-modules-form-template-management-template.entity-BCpgfVMz.mjs.map +1 -0
  79. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs → acorex-modules-form-template-management-viewer-popup.component-DDfjwbrL.mjs} +2 -2
  80. 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
  81. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  82. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-8iEAzfh5.mjs → acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs} +2 -8
  83. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-CAibWOZT.mjs.map +1 -0
  84. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BiJX9lxr.mjs → acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BiJX9lxr.mjs.map → acorex-modules-help-desk-capture-screen.component-BSBozesT.mjs.map} +1 -1
  86. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  87. package/fesm2022/acorex-modules-identifier-management.mjs +81 -39
  88. package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
  89. package/fesm2022/acorex-modules-location-management.mjs +4 -3
  90. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  91. package/fesm2022/acorex-modules-log-management.mjs +0 -1
  92. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  93. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs +121 -0
  94. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +1 -0
  95. package/fesm2022/acorex-modules-meeting-management.mjs +2899 -0
  96. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -0
  97. package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs +544 -0
  98. package/fesm2022/acorex-modules-notification-management-notification-page.component-TLxLpxzE.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-notification-management.mjs +145 -126
  100. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  101. package/fesm2022/{acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs → acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs} +114 -68
  102. package/fesm2022/acorex-modules-organization-management-employee.entity-CRc2YjNR.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-organization-management.mjs +22 -1
  104. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  105. 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
  106. 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
  107. 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
  108. 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
  109. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs → acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs} +12 -10
  110. package/fesm2022/acorex-modules-party-management-party-identifier.entity-CP47qbc-.mjs.map +1 -0
  111. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs} +2 -2
  112. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map → acorex-modules-party-management-party-relationship.entity-pGea5plN.mjs.map} +1 -1
  113. package/fesm2022/{acorex-modules-party-management-party-role.entity-C5BeakjX.mjs → acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs} +7 -7
  114. package/fesm2022/acorex-modules-party-management-party-role.entity-CDt7Rxu7.mjs.map +1 -0
  115. package/fesm2022/{acorex-modules-party-management-party.entity-Blwg8o3o.mjs → acorex-modules-party-management-party.entity-DAvqOPic.mjs} +4 -4
  116. package/fesm2022/acorex-modules-party-management-party.entity-DAvqOPic.mjs.map +1 -0
  117. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  118. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  119. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  120. package/fesm2022/acorex-modules-project-management.mjs +98 -97
  121. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  122. 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
  123. package/fesm2022/acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs.map +1 -0
  124. package/fesm2022/acorex-modules-report-management.mjs +1 -1
  125. package/fesm2022/acorex-modules-security-management.mjs +5 -5
  126. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  127. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs → acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs} +11 -1
  128. package/fesm2022/acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs.map +1 -0
  129. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  130. package/fesm2022/{acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs → acorex-modules-task-management-task-board.page-DbpqZaC7.mjs} +16 -11
  131. package/fesm2022/acorex-modules-task-management-task-board.page-DbpqZaC7.mjs.map +1 -0
  132. package/fesm2022/acorex-modules-task-management.mjs +3026 -2821
  133. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  134. package/fesm2022/acorex-modules-workflow-management.mjs +39 -1
  135. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  136. package/form-template-management/index.d.ts +3 -0
  137. package/identifier-management/index.d.ts +15 -16
  138. package/meeting-management/README.md +29 -0
  139. package/meeting-management/index.d.ts +248 -0
  140. package/notification-management/index.d.ts +6 -4
  141. package/package.json +9 -5
  142. package/task-management/index.d.ts +34 -2
  143. package/workflow-management/index.d.ts +4 -33
  144. package/fesm2022/acorex-modules-auth-password.component-FNLwhWMe.mjs.map +0 -1
  145. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BvIGh15O.mjs.map +0 -1
  146. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +0 -1
  147. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map +0 -1
  148. package/fesm2022/acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map +0 -1
  149. package/fesm2022/acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map +0 -1
  150. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-8iEAzfh5.mjs.map +0 -1
  151. package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +0 -1
  152. package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +0 -1
  153. package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +0 -1
  154. package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +0 -1
  155. package/fesm2022/acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map +0 -1
  156. package/fesm2022/acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map +0 -1
  157. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs +0 -244
  158. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map +0 -1
  159. package/fesm2022/acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map +0 -1
@@ -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,9 +881,9 @@ 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',
@@ -786,40 +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,
794
905
  disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
795
906
  },
907
+ ],
908
+ },
909
+ list: {
910
+ actions: [
796
911
  {
797
- title: `t("document-signature.sign.title", { scope: "${i18n}" })`,
912
+ title: 't("detail", { scope: "common" })',
913
+ command: 'open-entity',
914
+ priority: 'secondary',
915
+ type: 'view',
916
+ default: true,
917
+ scope: AXPEntityCommandScope.Individual,
918
+ },
919
+ {
920
+ title: `t("document-review.send-review.title", { scope: "${i18n}" })`,
921
+ icon: 'fa-light fa-shield-check',
798
922
  command: {
799
- name: 'document-signature',
923
+ name: 'send-to-review',
800
924
  options: {
801
925
  id: '{{context.eval("id")}}',
802
926
  title: '{{context.eval("title")}}',
803
- }
927
+ },
804
928
  },
805
929
  priority: 'secondary',
806
- type: 'sign',
807
- scope: AXPEntityCommandScope.TypeLevel,
808
- hidden: '{{context.eval("status") != "Distributed"}}',
930
+ type: 'sent',
931
+ scope: AXPEntityCommandScope.Individual,
932
+ disabled: '{{context.eval("status") != "Draft"}}',
809
933
  },
810
- ],
811
- },
812
- list: {
813
- actions: [
814
934
  {
815
- title: 't("detail", { scope: "common" })',
816
- 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
+ },
817
949
  priority: 'secondary',
818
- type: 'view',
950
+ type: 'review',
819
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"}}',
820
968
  },
821
969
  ],
822
- 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
+ ],
823
1006
  },
824
1007
  },
825
1008
  },
@@ -2748,19 +2931,6 @@ async function reviewFactory(injector) {
2748
2931
  name: 'reviewerId',
2749
2932
  title: `t("reviewer", { scope: "${i18n}" })`,
2750
2933
  groupId: 'section',
2751
- options: {
2752
- sort: {
2753
- enabled: true,
2754
- },
2755
- filter: {
2756
- advance: {
2757
- enabled: true,
2758
- },
2759
- inline: {
2760
- enabled: true,
2761
- },
2762
- },
2763
- },
2764
2934
  schema: {
2765
2935
  dataType: 'string',
2766
2936
  defaultValue: "{{ session.currentUser().id }}",
@@ -2769,11 +2939,11 @@ async function reviewFactory(injector) {
2769
2939
  options: {
2770
2940
  entity: 'SecurityManagement.users',
2771
2941
  multiple: false,
2772
- textField: 'name',
2942
+ textField: 'username',
2773
2943
  valueField: 'id',
2774
2944
  expose: [
2775
2945
  { source: 'id', target: 'reviewer.id' },
2776
- { source: 'name', target: 'reviewer.name' },
2946
+ { source: 'username', target: 'reviewer.username' },
2777
2947
  ],
2778
2948
  },
2779
2949
  },
@@ -2909,7 +3079,7 @@ async function reviewFactory(injector) {
2909
3079
  ],
2910
3080
  columns: [
2911
3081
  { name: 'documentId', options: { dataPath: 'document.name' } },
2912
- { name: 'reviewerId', options: { dataPath: 'reviewerId.displayName' } },
3082
+ { name: 'reviewerId', options: { dataPath: 'reviewer.title' } },
2913
3083
  { name: 'status' },
2914
3084
  { name: 'comment' },
2915
3085
  { name: 'reviewedAt' },
@@ -2964,7 +3134,9 @@ async function reviewFactory(injector) {
2964
3134
  },
2965
3135
  list: {
2966
3136
  execute: async (e) => {
2967
- 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;
2968
3140
  },
2969
3141
  type: AXPEntityQueryType.List,
2970
3142
  },
@@ -3196,23 +3368,7 @@ async function reviewFactory(injector) {
3196
3368
  actions: [],
3197
3369
  },
3198
3370
  list: {
3199
- actions: [
3200
- {
3201
- title: 't("detail", { scope: "common" })',
3202
- command: 'open-entity',
3203
- priority: 'secondary',
3204
- type: 'view',
3205
- scope: AXPEntityCommandScope.Individual,
3206
- default: true,
3207
- },
3208
- {
3209
- title: 't("detail", { scope: "common" })',
3210
- command: 'open-entity',
3211
- priority: 'secondary',
3212
- type: 'view',
3213
- scope: AXPEntityCommandScope.Individual,
3214
- },
3215
- ],
3371
+ actions: [],
3216
3372
  views: [
3217
3373
  createAllQueryView({
3218
3374
  sorts: [{ name: 'reviewedAt', dir: 'desc' }],
@@ -4692,20 +4848,25 @@ const AXMUploadWorkflow = {
4692
4848
  class AXMSendToReviewConfirmAction extends AXPWorkflowAction {
4693
4849
  constructor() {
4694
4850
  super(...arguments);
4695
- this.dialogService = inject(AXDialogService);
4851
+ this.popupService = inject(AXPopupService);
4696
4852
  this.translationService = inject(AXTranslationService);
4697
4853
  }
4698
- //private documentService = inject(AXMDocumentService);
4699
4854
  async execute(context) {
4700
4855
  const documentId = context.getVariable('options.id');
4701
4856
  const documentTitle = context.getVariable('options.title');
4702
- const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync('document-review.confirm-send.title', {
4703
- scope: 'document-management',
4704
- }), await this.translationService.translateAsync('document-review.confirm-send.message', {
4705
- scope: 'document-management',
4706
- params: { title: documentTitle },
4707
- }), 'primary', 'horizontal', false, 'cancel');
4708
- 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);
4709
4870
  }
4710
4871
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMSendToReviewConfirmAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4711
4872
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMSendToReviewConfirmAction }); }
@@ -4738,6 +4899,7 @@ class AXMUpdateDocumentStatusAction extends AXPWorkflowAction {
4738
4899
  name: document.updatedBy ?? '',
4739
4900
  title: document.updatedBy ?? '',
4740
4901
  },
4902
+ reviewerId: context.getVariable('assignTo'),
4741
4903
  });
4742
4904
  await this.documentService.updateOne(documentId, {
4743
4905
  status: 'PendingReview',
@@ -4811,14 +4973,14 @@ const AXMSendToReviewWorkflow = {
4811
4973
  },
4812
4974
  },
4813
4975
  };
4814
- class AXMCheckOutputAction extends AXPWorkflowAction {
4976
+ class AXMChangeEntityAction extends AXPWorkflowAction {
4815
4977
  async execute(context) {
4816
- console.log(context);
4978
+ context.setVariable('entity', `${RootConfig.module.name}.${RootConfig.entities.document.name}`);
4817
4979
  }
4818
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCheckOutputAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
4819
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCheckOutputAction }); }
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 }); }
4820
4982
  }
4821
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCheckOutputAction, decorators: [{
4983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChangeEntityAction, decorators: [{
4822
4984
  type: Injectable
4823
4985
  }] });
4824
4986
  /**
@@ -4838,6 +5000,26 @@ const AXMSubmitReviewWorkflow = {
4838
5000
  },
4839
5001
  },
4840
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
+ ],
4841
5023
  },
4842
5024
  'reload-entity': {
4843
5025
  id: 'reload-entity',
@@ -5117,22 +5299,43 @@ const AXMDocumentSignatureWorkflow = {
5117
5299
  },
5118
5300
  };
5119
5301
 
5120
- class AXMTaskBadgeProviderSample1 {
5302
+ class AXMDocumentReviewBadgeProvider {
5121
5303
  constructor() {
5304
+ this.documentReviewService = inject(AXMDocumentService);
5122
5305
  this.count = signal(0, ...(ngDevMode ? [{ debugName: "count" }] : []));
5123
- this.key = 'badge-1';
5124
- this.count.set(10);
5306
+ this.key = 'review-badge';
5307
+ this.getCount();
5125
5308
  }
5126
- }
5127
- class AXMTaskBadgeProviderSample2 {
5128
- constructor() {
5129
- this.count = signal(5, ...(ngDevMode ? [{ debugName: "count" }] : []));
5130
- this.key = 'badge-2';
5131
- setInterval(() => {
5132
- this.count.update(c => c + 1);
5133
- }, 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);
5134
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 }); }
5135
5335
  }
5336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMDocumentReviewBadgeProvider, decorators: [{
5337
+ type: Injectable
5338
+ }], ctorParameters: () => [] });
5136
5339
 
5137
5340
  //#region ---- Imports ----
5138
5341
  //#endregion
@@ -5570,7 +5773,7 @@ class AXMDocumentManagerService {
5570
5773
  * Moves a node to another location
5571
5774
  */
5572
5775
  async moveTo(options) {
5573
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs')).AXMDocumentDriveChooseComponent;
5776
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5574
5777
  const popup = await this.popupService.open(comp, {
5575
5778
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5576
5779
  data: {
@@ -5603,7 +5806,7 @@ class AXMDocumentManagerService {
5603
5806
  * Copies a node to another location
5604
5807
  */
5605
5808
  async copyTo(options) {
5606
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs')).AXMDocumentDriveChooseComponent;
5809
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5607
5810
  const popup = await this.popupService.open(comp, {
5608
5811
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5609
5812
  data: {
@@ -5750,16 +5953,30 @@ class AXMDocumentManagerService {
5750
5953
  status: docType.requiresReview ? (isReviewSent ? 'PendingReview' : 'Draft') : 'Completed',
5751
5954
  });
5752
5955
  if (isReviewSent) {
5753
- const reviewRecordID = await this.reviewService.insertOne({
5754
- documentId: docId,
5755
- // document : docType,
5756
- version: 1,
5757
- reviewStatus: 'Pending',
5758
- modifiedBy: this.sessionService.user,
5759
- });
5760
- await this.documentService.updateOne(docId, {
5761
- 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
+ },
5762
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
+ }
5763
5980
  }
5764
5981
  }
5765
5982
  return true;
@@ -5822,12 +6039,26 @@ class AXMDocumentManagerService {
5822
6039
  const newVersion = docType.enableVersioning ? (editableFile.version ?? 1) + 1 : undefined;
5823
6040
  let reviewRecordID = undefined;
5824
6041
  if (isReviewSent) {
5825
- reviewRecordID = await this.reviewService.insertOne({
5826
- documentId: node.id,
5827
- version: newVersion ?? 0,
5828
- reviewStatus: 'Pending',
5829
- 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
+ },
5830
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
+ }
5831
6062
  }
5832
6063
  await this.documentService.updateOne(node.id, {
5833
6064
  fileId: newFileId ?? editableFile.fileId,
@@ -5921,7 +6152,7 @@ class AXMDocumentManagerService {
5921
6152
  * Shows folder edit dialog
5922
6153
  */
5923
6154
  async showFolderEditDialog(node) {
5924
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs'))
6155
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs'))
5925
6156
  .AXMCreateFolderDialog;
5926
6157
  const popup = await this.popupService.open(comp, {
5927
6158
  title: await this.translate.translateAsync('@document-management:actions.update-folder'),
@@ -5935,7 +6166,7 @@ class AXMDocumentManagerService {
5935
6166
  * Shows create folder dialog
5936
6167
  */
5937
6168
  async showCreateFolderDialog(parentId) {
5938
- const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs'))
6169
+ const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-DPFIPNE_.mjs'))
5939
6170
  .AXMCreateFolderDialog;
5940
6171
  const popup = await this.popupService.open(comp, {
5941
6172
  title: await this.translate.translateAsync('@document-management:actions.create-folder'),
@@ -5949,7 +6180,7 @@ class AXMDocumentManagerService {
5949
6180
  * Shows rename popup for a node
5950
6181
  */
5951
6182
  async showRenamePopup(node) {
5952
- const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-DXiQj-Hb.mjs'))
6183
+ const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-DZRAXwFy.mjs'))
5953
6184
  .AXMRenameNodeDialog;
5954
6185
  const popup = await this.popupService.open(comp, {
5955
6186
  title: 't("actions.rename")',
@@ -5975,7 +6206,7 @@ class AXMDocumentManagerService {
5975
6206
  * Shows choose file dialog
5976
6207
  */
5977
6208
  async showChooseFileDialog(scope) {
5978
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs')).AXMDocumentDriveChooseComponent;
6209
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-BOPjvKlN.mjs')).AXMDocumentDriveChooseComponent;
5979
6210
  const result = await this.popupService.open(comp, {
5980
6211
  title: await this.translate.translateAsync('@document-management:actions.choose-from-drive'),
5981
6212
  data: {
@@ -7232,13 +7463,13 @@ class AXMDocumentExplorerComponent {
7232
7463
  this.showContextMenu = input(true, ...(ngDevMode ? [{ debugName: "showContextMenu" }] : []));
7233
7464
  this.view = signal(null, ...(ngDevMode ? [{ debugName: "view" }] : []));
7234
7465
  this.viewMap = {
7235
- list: async () => (await import('./acorex-modules-document-management-list-view.component-BGUDmglV.mjs')).AXMDocumentExplorerListViewComponent,
7236
- 'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-B70rSvao.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
7237
- 'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-DL3PEFfv.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
7238
- details: async () => (await import('./acorex-modules-document-management-details-view.component-BmJB8bb8.mjs')).AXMDocumentExplorerDetailsViewComponent,
7239
- 'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-C-9UNa_X.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
7240
- 'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-C8RZC3TM.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
7241
- 'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-ClgS3Q8D.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,
7242
7473
  };
7243
7474
  this.#effect = effect(() => {
7244
7475
  if (this.vm.loadingFolderId() == null) {
@@ -7710,7 +7941,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7710
7941
  * Handle adding new metadata items
7711
7942
  */
7712
7943
  async handleAddClick() {
7713
- 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;
7714
7945
  const result = await this.popupService.open(comp, {
7715
7946
  title: 'Meta Selector',
7716
7947
  data: {
@@ -7738,7 +7969,7 @@ class AXPMetaSelectorWidgetEditComponent extends AXPValueWidgetComponent {
7738
7969
  * Handle editing a metadata item
7739
7970
  */
7740
7971
  async handleMetaEdit(item) {
7741
- 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;
7742
7973
  const result = await this.popupService.open(comp, {
7743
7974
  title: 'Edit Meta Selector',
7744
7975
  data: {
@@ -7902,6 +8133,478 @@ const AXPMetaSelectorWidget = {
7902
8133
  },
7903
8134
  };
7904
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
+
7905
8608
  function routesFacory() {
7906
8609
  const config = inject(AXP_ENTITY_CONFIG_TOKEN);
7907
8610
  const routes = [
@@ -7915,11 +8618,11 @@ function routesFacory() {
7915
8618
  children: [
7916
8619
  {
7917
8620
  path: '',
7918
- loadComponent: () => import('./acorex-modules-document-management-drive.component-R1V4W9u3.mjs').then((c) => c.AXMDocumentDriveComponent),
8621
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-DutBXTtm.mjs').then((c) => c.AXMDocumentDriveComponent),
7919
8622
  },
7920
8623
  {
7921
8624
  path: ':id',
7922
- loadComponent: () => import('./acorex-modules-document-management-drive.component-R1V4W9u3.mjs').then((c) => c.AXMDocumentDriveComponent),
8625
+ loadComponent: () => import('./acorex-modules-document-management-drive.component-DutBXTtm.mjs').then((c) => c.AXMDocumentDriveComponent),
7923
8626
  },
7924
8627
  ],
7925
8628
  },
@@ -7973,21 +8676,28 @@ class AXMDocumentManagementModule {
7973
8676
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
7974
8677
  useFactory: async () => {
7975
8678
  const injector = inject(Injector);
7976
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs')).AXMPermissionDefinitionProvider;
8679
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs')).AXMPermissionDefinitionProvider;
7977
8680
  return new provider(injector);
7978
8681
  },
7979
8682
  multi: true,
7980
8683
  },
7981
8684
  {
7982
8685
  provide: AXP_TASK_BADGE_PROVIDERS,
7983
- useClass: AXMTaskBadgeProviderSample1,
8686
+ useClass: AXMDocumentReviewBadgeProvider,
7984
8687
  multi: true,
7985
8688
  },
7986
8689
  {
7987
- provide: AXP_TASK_BADGE_PROVIDERS,
7988
- 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,
7989
8697
  multi: true,
7990
8698
  },
8699
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: attachmentsUploadMiddleware },
8700
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
7991
8701
  {
7992
8702
  provide: ROUTES,
7993
8703
  multi: true,
@@ -8016,7 +8726,7 @@ class AXMDocumentManagementModule {
8016
8726
  AXMCreateDistributionRecordsAction,
8017
8727
  AXMDocumentSignaturePopupAction,
8018
8728
  AXMSaveSignatureInteractionAction,
8019
- AXMCheckOutputAction
8729
+ AXMChangeEntityAction
8020
8730
  },
8021
8731
  workflows: {
8022
8732
  'upload-document': AXMUploadWorkflow,
@@ -8054,7 +8764,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8054
8764
  AXMCreateDistributionRecordsAction,
8055
8765
  AXMDocumentSignaturePopupAction,
8056
8766
  AXMSaveSignatureInteractionAction,
8057
- AXMCheckOutputAction
8767
+ AXMChangeEntityAction
8058
8768
  },
8059
8769
  workflows: {
8060
8770
  'upload-document': AXMUploadWorkflow,
@@ -8104,21 +8814,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8104
8814
  provide: AXP_PERMISSION_DEFINITION_PROVIDER,
8105
8815
  useFactory: async () => {
8106
8816
  const injector = inject(Injector);
8107
- const provider = (await import('./acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs')).AXMPermissionDefinitionProvider;
8817
+ const provider = (await import('./acorex-modules-document-management-permission-definition.provider-_AXz3sdF.mjs')).AXMPermissionDefinitionProvider;
8108
8818
  return new provider(injector);
8109
8819
  },
8110
8820
  multi: true,
8111
8821
  },
8112
8822
  {
8113
8823
  provide: AXP_TASK_BADGE_PROVIDERS,
8114
- useClass: AXMTaskBadgeProviderSample1,
8824
+ useClass: AXMDocumentReviewBadgeProvider,
8115
8825
  multi: true,
8116
8826
  },
8117
8827
  {
8118
- provide: AXP_TASK_BADGE_PROVIDERS,
8119
- 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,
8120
8835
  multi: true,
8121
8836
  },
8837
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: attachmentsUploadMiddleware },
8838
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
8122
8839
  {
8123
8840
  provide: ROUTES,
8124
8841
  multi: true,
@@ -8133,4 +8850,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8133
8850
  */
8134
8851
 
8135
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 };
8136
- //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-BvIGh15O.mjs.map
8853
+ //# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-D9oPjJnn.mjs.map