@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,17 +1,15 @@
1
1
  import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
2
- import { AXPHomePageService, AXPSearchCommandProvider, AXPSearchService, AXPSettingService, AXPLockService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
3
- import { AXPEntityDefinitionRegistryService, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
2
+ import { AXPHomePageService, AXPSearchCommandProvider, AXPSearchService, AXPSettingService, AXPEntityCommandScope, AXPLockService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
3
+ import { AXPEntityDefinitionRegistryService, AXP_ENTITY_STORAGE_BACKEND, detectEntityChanges, ensureListActions, actionExists, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, Injector, Injectable, input, signal, ViewEncapsulation, Component, NgModule, InjectionToken, HostListener, computed, viewChild } from '@angular/core';
6
6
  import { firstValueFrom, Subject } from 'rxjs';
7
7
  import * as i1$2 from '@acorex/platform/core';
8
- import { objectKeyValueTransforms, AXPPlatformScope, AXPActivityLogService, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';
8
+ import { objectKeyValueTransforms, AXPPlatformScope, AXPActivityLogService, AXPSystemActionType, extractTextFromHtml, AXPDataGenerator, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';
9
9
  import * as i4 from '@acorex/core/translation';
10
10
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
11
11
  import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
12
12
  import { AXPWidgetsModule } from '@acorex/platform/widgets';
13
- import * as i1$1 from '@acorex/platform/workflow';
14
- import { AXPWorkflowAction, AXPWorkflowModule, AXPWorkflowService } from '@acorex/platform/workflow';
15
13
  import * as i1 from '@angular/common';
16
14
  import { CommonModule } from '@angular/common';
17
15
  import * as i2 from '@acorex/components/button';
@@ -21,9 +19,12 @@ import * as i3 from '@acorex/components/decorators';
21
19
  import { AXDecoratorModule } from '@acorex/components/decorators';
22
20
  import * as i2$1 from '@acorex/platform/layout/components';
23
21
  import { AXPCompareViewComponent, AXPComponentSlotModule } from '@acorex/platform/layout/components';
22
+ import * as i1$1 from '@acorex/platform/workflow';
23
+ import { AXPWorkflowAction, AXPWorkflowModule, AXPWorkflowService } from '@acorex/platform/workflow';
24
24
  import { AXPopupService } from '@acorex/components/popup';
25
25
  import { AXFormatService } from '@acorex/core/format';
26
26
  import { AXTextBoxModule } from '@acorex/components/text-box';
27
+ import { AXCalendarService } from '@acorex/core/date-time';
27
28
  import { AXDialogService } from '@acorex/components/dialog';
28
29
  import * as i1$3 from '@angular/forms';
29
30
  import { FormsModule } from '@angular/forms';
@@ -36,7 +37,6 @@ import { AXSelectBoxModule } from '@acorex/components/select-box';
36
37
  import * as i7 from '@acorex/components/text-area';
37
38
  import { AXTextAreaModule } from '@acorex/components/text-area';
38
39
  import { AXValidationModule } from '@acorex/core/validation';
39
- import { AXCalendarService } from '@acorex/core/date-time';
40
40
 
41
41
  const config = {
42
42
  i18n: 'common',
@@ -116,7 +116,7 @@ class AXMMenuProvider {
116
116
  context.addItems([
117
117
  {
118
118
  name: 'tenant-application-settings',
119
- priority: 10000,
119
+ priority: 10000000,
120
120
  text: `t('tenant.title', {scope: "settings"})`,
121
121
  type: 'menu',
122
122
  icon: 'fa-light fa-gear',
@@ -706,15 +706,322 @@ class AXPGlobalSearchViewModel {
706
706
  }
707
707
  }
708
708
 
709
+ class AXMVersionHistoryPopupStartAction extends AXPWorkflowAction {
710
+ constructor() {
711
+ super(...arguments);
712
+ this.popupService = inject(AXPopupService);
713
+ this.translate = inject(AXTranslationService);
714
+ }
715
+ async execute(context) {
716
+ const comp = (await import('./acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs')).AXMTimelineVersionHistoryPopupComponent;
717
+ this.popupService.open(comp, {
718
+ title: await this.translate.translateAsync('@activity-log:actions.view-history'),
719
+ data: {
720
+ refId: context.getVariable('options.refId'),
721
+ refType: context.getVariable('options.refType'),
722
+ fromDate: context.getVariable('options.fromDate'),
723
+ toDate: context.getVariable('options.toDate'),
724
+ limit: context.getVariable('options.limit'),
725
+ offset: context.getVariable('options.offset'),
726
+ },
727
+ });
728
+ }
729
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
730
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction }); }
731
+ }
732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, decorators: [{
733
+ type: Injectable
734
+ }] });
735
+ const AXMVersionHistoryPopupWorkflow = {
736
+ startStepId: 'start',
737
+ steps: {
738
+ start: {
739
+ action: 'show-version-history-popup-action',
740
+ },
741
+ },
742
+ };
743
+
744
+ const historyLoggerMiddleware = {
745
+ target: { ops: ['create', 'update', 'delete'], order: 80 },
746
+ execute: async (ctx, next) => {
747
+ const entityRegistry = inject(AXPEntityDefinitionRegistryService);
748
+ const sessionService = inject(AXPSessionService);
749
+ const backend = inject(AXP_ENTITY_STORAGE_BACKEND);
750
+ // Capture previous for update/delete
751
+ if (ctx.op === 'update' || ctx.op === 'delete') {
752
+ try {
753
+ ctx.previous = await ctx.backend.getOneRaw(ctx.entityName, ctx.id);
754
+ }
755
+ catch { /* ignore */ }
756
+ }
757
+ await next();
758
+ // Build history entry
759
+ const now = new Date();
760
+ const [moduleName, entityModuleName] = ctx.entityName.split('.');
761
+ const entityConfig = await entityRegistry.resolve(moduleName, entityModuleName);
762
+ const actions = [];
763
+ if (ctx.op === 'update' && ctx.previous && ctx.result) {
764
+ const changes = detectEntityChanges(ctx.previous, ctx.result);
765
+ // Build actions similar to old addToHistory mapping by widget type
766
+ if (entityConfig) {
767
+ for (const [key, value] of Object.entries(changes)) {
768
+ const property = entityConfig.properties.find((p) => p.name === key);
769
+ if (property && property.schema?.interface) {
770
+ const widgetType = property.schema.interface.type;
771
+ switch (widgetType) {
772
+ case 'file-uploader':
773
+ if (value.added?.length) {
774
+ actions.push({
775
+ type: AXPSystemActionType.Upload,
776
+ description: `"${value.added?.map((item) => item.name).join(', ')}"`,
777
+ });
778
+ }
779
+ if (value.removed?.length) {
780
+ actions.push({
781
+ type: AXPSystemActionType.Delete,
782
+ description: `"${value.removed?.map((item) => item.name).join(', ')}"`,
783
+ });
784
+ }
785
+ break;
786
+ case 'large-text-editor':
787
+ case 'rich-text-editor': {
788
+ const safeValue = extractTextFromHtml(value.newValue);
789
+ actions.push({
790
+ type: AXPSystemActionType.Update,
791
+ description: `${property.title} to "${safeValue.length > 100 ? safeValue.slice(0, 30) + '...' : safeValue}"`,
792
+ });
793
+ break;
794
+ }
795
+ case 'text-editor':
796
+ actions.push({
797
+ type: AXPSystemActionType.Update,
798
+ description: `${property.title} to "${value.newValue.length > 100 ? value.newValue.slice(0, 30) + '...' : value.newValue}"`,
799
+ });
800
+ break;
801
+ default:
802
+ actions.push({ type: AXPSystemActionType.Update, description: `${property.title}` });
803
+ }
804
+ }
805
+ }
806
+ }
807
+ // Expose raw changes to event middleware
808
+ ctx.locals.set('changes', changes);
809
+ }
810
+ // Compute reference ID and final data per operation
811
+ let referenceId;
812
+ let finalData = undefined;
813
+ if (ctx.op === 'create') {
814
+ const createdId = String(ctx.result);
815
+ const createdEntity = { ...ctx.data, id: createdId };
816
+ referenceId = createdId;
817
+ finalData = createdEntity;
818
+ }
819
+ else if (ctx.op === 'update') {
820
+ referenceId = String(ctx.id);
821
+ finalData = ctx.result;
822
+ }
823
+ else {
824
+ // delete
825
+ referenceId = String(ctx.id);
826
+ finalData = ctx.previous;
827
+ }
828
+ const record = {
829
+ id: AXPDataGenerator.uuid(),
830
+ title: entityConfig?.title ?? now.toISOString(),
831
+ date: now,
832
+ user: {
833
+ id: sessionService.user?.id ?? 'system',
834
+ name: sessionService.user?.name ?? 'System',
835
+ title: sessionService.user?.title ?? 'System',
836
+ },
837
+ reference: { id: referenceId, type: ctx.entityName },
838
+ changeType: ctx.op === 'create'
839
+ ? AXPSystemActionType.Create
840
+ : ctx.op === 'update'
841
+ ? AXPSystemActionType.Update
842
+ : AXPSystemActionType.Delete,
843
+ changes: actions,
844
+ data: finalData,
845
+ };
846
+ // Persist via backend raw insert to avoid recursive middleware
847
+ try {
848
+ await backend.insertOne(`${ctx.entityName}-history`, { ...record, isCurrent: true });
849
+ }
850
+ catch (error) {
851
+ console.error(error);
852
+ // swallow errors to avoid breaking main flow
853
+ }
854
+ },
855
+ };
856
+
857
+ const historyPlugin = {
858
+ name: 'history',
859
+ order: 50,
860
+ apply: (ctx) => {
861
+ ensureListActions(ctx);
862
+ ctx.interfaces.update((i) => {
863
+ const cmdName = 'show-version-history-popup';
864
+ //
865
+ const listActions = i.master.list.actions;
866
+ if (!actionExists(listActions, cmdName)) {
867
+ listActions.push({
868
+ title: '@activity-log:actions.view-history',
869
+ command: {
870
+ name: cmdName,
871
+ options: {
872
+ refId: '{{ context.eval("id") }}',
873
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
874
+ },
875
+ },
876
+ priority: 'secondary',
877
+ type: 'version-history',
878
+ scope: AXPEntityCommandScope.Individual,
879
+ });
880
+ }
881
+ //
882
+ const singleActions = i.master.single.actions;
883
+ if (!actionExists(singleActions, cmdName)) {
884
+ singleActions.push({
885
+ title: '@activity-log:actions.view-history',
886
+ command: {
887
+ name: cmdName,
888
+ options: {
889
+ refId: '{{ context.eval("id") }}',
890
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
891
+ },
892
+ },
893
+ priority: 'secondary',
894
+ type: 'version-history',
895
+ scope: AXPEntityCommandScope.Individual,
896
+ });
897
+ }
898
+ //
899
+ return i;
900
+ });
901
+ },
902
+ };
903
+
904
+ const comparePlugin = {
905
+ name: 'compare',
906
+ order: 50,
907
+ apply: (ctx) => {
908
+ ensureListActions(ctx);
909
+ ctx.interfaces.update((i) => {
910
+ const actions = i.master.list.actions;
911
+ const cmdName = 'show-entity-records-compare';
912
+ if (!actionExists(actions, cmdName)) {
913
+ actions.push({
914
+ title: '@activity-log:actions.compare-records',
915
+ command: { name: cmdName },
916
+ priority: 'secondary',
917
+ type: 'compare',
918
+ scope: AXPEntityCommandScope.Selected,
919
+ });
920
+ }
921
+ return i;
922
+ });
923
+ },
924
+ };
925
+
926
+ class AXPVersionHistoryModule {
927
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
928
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, imports: [i1$1.AXPWorkflowModule] }); }
929
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, providers: [
930
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: historyLoggerMiddleware },
931
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: historyPlugin },
932
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: comparePlugin },
933
+ ], imports: [AXPWorkflowModule.forChild({
934
+ actions: {
935
+ 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
936
+ },
937
+ workflows: {
938
+ 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
939
+ },
940
+ })] }); }
941
+ }
942
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, decorators: [{
943
+ type: NgModule,
944
+ args: [{
945
+ imports: [
946
+ AXPWorkflowModule.forChild({
947
+ actions: {
948
+ 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
949
+ },
950
+ workflows: {
951
+ 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
952
+ },
953
+ }),
954
+ ],
955
+ exports: [],
956
+ providers: [
957
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: historyLoggerMiddleware },
958
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: historyPlugin },
959
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: comparePlugin },
960
+ ],
961
+ }]
962
+ }] });
963
+
964
+ class AXPDateTimeEvaluatorScopeProvider {
965
+ constructor() {
966
+ this.calendarService = inject(AXCalendarService);
967
+ }
968
+ async provide(context) {
969
+ context.addScope('date', {
970
+ today: () => {
971
+ return this.calendarService.now();
972
+ },
973
+ tomorrow: () => {
974
+ return this.calendarService.create(this.calendarService.now()).add('day', 1).startOf('day').date;
975
+ },
976
+ yesterday: () => {
977
+ return this.calendarService.create(this.calendarService.now()).add('day', -1).startOf('day').date;
978
+ },
979
+ addDays: (date, days) => {
980
+ return this.calendarService.create(date).add('day', days).date;
981
+ },
982
+ });
983
+ }
984
+ }
985
+
986
+ class AXPTranslateEvaluatorScopeProvider {
987
+ constructor() {
988
+ this.translateService = inject(AXTranslationService);
989
+ }
990
+ async provide(context) {
991
+ context.addScope('translate', {
992
+ resolve: async (text, options) => {
993
+ return await this.translateService.translateAsync(text, options);
994
+ },
995
+ });
996
+ }
997
+ }
998
+
999
+ const lockGuardMiddleware = {
1000
+ target: { ops: ['update', 'delete'], order: 10 },
1001
+ execute: async (ctx, next) => {
1002
+ const lockService = inject(AXPLockService);
1003
+ const session = inject(AXPSessionService);
1004
+ const lock = await lockService.check({ refId: ctx.id, refType: ctx.entityName });
1005
+ if (lock) {
1006
+ const info = await lockService.getInfo({ refId: ctx.id, refType: ctx.entityName });
1007
+ if (info && session.user && info.lockedBy.id !== session.user.id) {
1008
+ throw new Error('This record is locked and cannot be edited.');
1009
+ }
1010
+ }
1011
+ await next();
1012
+ },
1013
+ };
1014
+
709
1015
  class AXMLockPopupWorkflowAction extends AXPWorkflowAction {
710
1016
  constructor() {
711
1017
  super(...arguments);
712
1018
  this.popupService = inject(AXPopupService);
1019
+ this.translationService = inject(AXTranslationService);
713
1020
  }
714
1021
  async execute(context) {
715
1022
  const comp = (await Promise.resolve().then(function () { return index; })).AXPLockPopupComponent;
716
1023
  const result = await this.popupService.open(comp, {
717
- title: 'lock-system.lock',
1024
+ title: await this.translationService.translateAsync('@lock-system:lock.dialog.title'),
718
1025
  data: {
719
1026
  refId: context.getVariable('options.refId'),
720
1027
  refType: context.getVariable('options.refType'),
@@ -778,7 +1085,7 @@ class AXMUnlockConfirmWorkflowAction extends AXPWorkflowAction {
778
1085
  const refId = context.getVariable('options.refId');
779
1086
  const refType = context.getVariable('options.refType');
780
1087
  // Show confirmation dialog
781
- const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync('unlock.title', { scope: 'general' }), await this.translationService.translateAsync('lock-system.confirm-unlock', { scope: 'general' }), 'warning', 'horizontal', false, 'cancel');
1088
+ const dialogResult = await this.dialogService.confirm(await this.translationService.translateAsync('@lock-system:unlock.dialog.title'), await this.translationService.translateAsync('@lock-system:unlock.dialog.description'), 'warning', 'horizontal', false, 'cancel');
782
1089
  if (dialogResult.result) {
783
1090
  try {
784
1091
  // Perform unlock
@@ -793,7 +1100,7 @@ class AXMUnlockConfirmWorkflowAction extends AXPWorkflowAction {
793
1100
  catch (error) {
794
1101
  console.error('Unlock failed:', error);
795
1102
  // Show error dialog
796
- await this.dialogService.alert(await this.translationService.translateAsync('workflow.error'), await this.translationService.translateAsync('lock-system.unlock-failed', { scope: 'general' }), 'danger');
1103
+ await this.dialogService.alert(await this.translationService.translateAsync('@lock-system:unlock.error.title'), await this.translationService.translateAsync('@lock-system:unlock.error.description'), 'danger');
797
1104
  context.setOutput('isCanceled', true);
798
1105
  context.setOutput('unlocked', false);
799
1106
  }
@@ -838,121 +1145,6 @@ const AXMUnlockConfirmWorkflow = {
838
1145
  },
839
1146
  };
840
1147
 
841
- class AXPLockPopupComponent extends AXBasePageComponent {
842
- constructor() {
843
- super(...arguments);
844
- //#endregion
845
- //#region ---- Signals & Services ----
846
- this.isBusy = signal(false, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
847
- this.form = viewChild.required('form');
848
- this.lockService = inject(AXPLockService);
849
- this.sessionService = inject(AXPSessionService);
850
- this.translationService = inject(AXTranslationService);
851
- //#endregion
852
- //#region ---- Form Data ----
853
- this.duration = '1h';
854
- this.reason = '';
855
- this.lockDurations = [];
856
- }
857
- async ngOnInit() {
858
- // Load translated duration options
859
- this.lockDurations = [
860
- {
861
- value: '1h',
862
- text: await this.translationService.translateAsync('lock-system.duration.options.1h', { scope: 'general' }),
863
- hours: 1
864
- },
865
- {
866
- value: '1d',
867
- text: await this.translationService.translateAsync('lock-system.duration.options.1d', { scope: 'general' }),
868
- hours: 24
869
- },
870
- {
871
- value: 'infinite',
872
- text: await this.translationService.translateAsync('lock-system.duration.options.infinite', { scope: 'general' })
873
- }
874
- ];
875
- }
876
- //#endregion
877
- //#region ---- UI Handlers ----
878
- async handleConfirm() {
879
- if (this.isBusy()) {
880
- return;
881
- }
882
- // Validate form
883
- const validation = await this.form().validate();
884
- if (!validation.result) {
885
- return;
886
- }
887
- // Ensure duration is selected
888
- if (!this.duration) {
889
- return;
890
- }
891
- this.isBusy.set(true);
892
- try {
893
- const selectedDuration = this.lockDurations.find(d => d.value === this.duration);
894
- const expireAt = selectedDuration?.hours
895
- ? new Date(Date.now() + selectedDuration.hours * 60 * 60 * 1000)
896
- : undefined; // undefined means infinite
897
- await this.lockService.lock({
898
- refId: this.refId,
899
- refType: this.refType,
900
- type: 'user',
901
- date: new Date().toISOString(),
902
- expireAt: expireAt,
903
- lockedBy: {
904
- id: this.sessionService.user?.id ?? 'system',
905
- type: 'oidc.users',
906
- },
907
- });
908
- // Close and notify success
909
- this.close({
910
- isCanceled: false,
911
- duration: this.duration,
912
- reason: this.reason
913
- });
914
- }
915
- catch (error) {
916
- console.error(error);
917
- // TODO: show error toast if required
918
- }
919
- finally {
920
- this.isBusy.set(false);
921
- }
922
- }
923
- handleCancel() {
924
- this.close({ isCanceled: true });
925
- }
926
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
927
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.6", type: AXPLockPopupComponent, isStandalone: true, selector: "axp-lock-popup", viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content *translate=\"let t\">\n <div class=\"ax-p-6\">\n <ax-form #form>\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n \n <!-- Lock Duration Selection -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('lock-system.duration.title', {scope: 'general'}) | async }}</ax-label>\n <ax-select-box\n [(ngModel)]=\"duration\"\n [dataSource]=\"lockDurations\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n name=\"duration\"\n class=\"ax-w-full\"\n >\n <ax-validation-rule\n rule=\"required\"\n message=\"This field is required\"\n ></ax-validation-rule>\n </ax-select-box>\n </ax-form-field>\n\n <!-- Optional Reason -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('lock-system.reason.title', {scope: 'general'}) | async }}</ax-label>\n <ax-text-area\n [(ngModel)]=\"reason\"\n [placeholder]=\"t('lock-system.reason.placeholder', {scope: 'general'}) | async\"\n name=\"reason\"\n class=\"ax-w-full ax-min-h-20\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-area>\n </ax-form-field>\n\n </div>\n </ax-form>\n </div>\n</ax-content>\n\n<ax-footer *translate=\"let t\">\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button \n [text]=\"t('cancel') | async\" \n (onClick)=\"handleCancel()\" \n [disabled]=\"isBusy()\"\n ></ax-button>\n <ax-button\n [text]=\"t('lock-system.lock', {scope: 'general'}) | async\"\n color=\"primary\"\n look=\"solid\"\n (onClick)=\"handleConfirm()\"\n [disabled]=\"isBusy()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type:
928
- // Angular
929
- CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
930
- // ACoreX
931
- AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i4$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i4$1.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i4$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i6.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i7.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
932
- }
933
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, decorators: [{
934
- type: Component,
935
- args: [{ selector: 'axp-lock-popup', standalone: true, imports: [
936
- // Angular
937
- CommonModule,
938
- FormsModule,
939
- // ACoreX
940
- AXButtonModule,
941
- AXDecoratorModule,
942
- AXFormModule,
943
- AXLabelModule,
944
- AXSelectBoxModule,
945
- AXTextAreaModule,
946
- AXTranslationModule,
947
- AXValidationModule,
948
- ], encapsulation: ViewEncapsulation.None, template: "<ax-content *translate=\"let t\">\n <div class=\"ax-p-6\">\n <ax-form #form>\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n \n <!-- Lock Duration Selection -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('lock-system.duration.title', {scope: 'general'}) | async }}</ax-label>\n <ax-select-box\n [(ngModel)]=\"duration\"\n [dataSource]=\"lockDurations\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n name=\"duration\"\n class=\"ax-w-full\"\n >\n <ax-validation-rule\n rule=\"required\"\n message=\"This field is required\"\n ></ax-validation-rule>\n </ax-select-box>\n </ax-form-field>\n\n <!-- Optional Reason -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('lock-system.reason.title', {scope: 'general'}) | async }}</ax-label>\n <ax-text-area\n [(ngModel)]=\"reason\"\n [placeholder]=\"t('lock-system.reason.placeholder', {scope: 'general'}) | async\"\n name=\"reason\"\n class=\"ax-w-full ax-min-h-20\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-area>\n </ax-form-field>\n\n </div>\n </ax-form>\n </div>\n</ax-content>\n\n<ax-footer *translate=\"let t\">\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button \n [text]=\"t('cancel') | async\" \n (onClick)=\"handleCancel()\" \n [disabled]=\"isBusy()\"\n ></ax-button>\n <ax-button\n [text]=\"t('lock-system.lock', {scope: 'general'}) | async\"\n color=\"primary\"\n look=\"solid\"\n (onClick)=\"handleConfirm()\"\n [disabled]=\"isBusy()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
949
- }] });
950
-
951
- var index = /*#__PURE__*/Object.freeze({
952
- __proto__: null,
953
- AXPLockPopupComponent: AXPLockPopupComponent
954
- });
955
-
956
1148
  class AXMLockEvaluatorScopeProvider {
957
1149
  constructor() {
958
1150
  this.lockService = inject(AXPLockService);
@@ -969,111 +1161,100 @@ class AXMLockEvaluatorScopeProvider {
969
1161
  }
970
1162
  }
971
1163
 
972
- class AXMVersionHistoryPopupStartAction extends AXPWorkflowAction {
973
- constructor() {
974
- super(...arguments);
975
- this.popupService = inject(AXPopupService);
976
- this.translate = inject(AXTranslationService);
977
- }
978
- async execute(context) {
979
- const comp = (await import('./acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs')).AXMTimelineVersionHistoryPopupComponent;
980
- this.popupService.open(comp, {
981
- title: await this.translate.translateAsync('@activity-log:actions.view-history'),
982
- data: {
983
- refId: context.getVariable('options.refId'),
984
- refType: context.getVariable('options.refType'),
985
- fromDate: context.getVariable('options.fromDate'),
986
- toDate: context.getVariable('options.toDate'),
987
- limit: context.getVariable('options.limit'),
988
- offset: context.getVariable('options.offset'),
989
- },
1164
+ const lockPlugin = {
1165
+ name: 'lock',
1166
+ order: 50,
1167
+ apply: (ctx) => {
1168
+ ensureListActions(ctx);
1169
+ ctx.interfaces.update((i) => {
1170
+ const actions = i.master.list.actions;
1171
+ if (!actions.some((a) => a.name === 'lock-entity')) {
1172
+ actions.push({
1173
+ title: '@lock-system:lock.title',
1174
+ name: 'lock-entity',
1175
+ command: {
1176
+ name: 'lock-popup',
1177
+ options: {
1178
+ refId: '{{ context.eval("id") }}',
1179
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
1180
+ },
1181
+ },
1182
+ priority: 'secondary',
1183
+ type: 'lock',
1184
+ scope: AXPEntityCommandScope.Individual,
1185
+ hidden: `{{ lock.check(context.eval("id"), "${ctx.entity.module}.${ctx.entity.name}") }}`,
1186
+ });
1187
+ }
1188
+ if (!actions.some((a) => a.name === 'unlock-entity')) {
1189
+ actions.push({
1190
+ title: '@lock-system:unlock.title',
1191
+ name: 'unlock-entity',
1192
+ command: {
1193
+ name: 'unlock-confirm',
1194
+ options: {
1195
+ refId: '{{ context.eval("id") }}',
1196
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
1197
+ },
1198
+ },
1199
+ priority: 'secondary',
1200
+ type: 'unlock',
1201
+ scope: AXPEntityCommandScope.Individual,
1202
+ hidden: `{{ (await lock.check(context.eval("id"), "${ctx.entity.module}.${ctx.entity.name}")) == false }}`,
1203
+ });
1204
+ }
1205
+ return i;
990
1206
  });
991
- }
992
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
993
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction }); }
994
- }
995
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, decorators: [{
996
- type: Injectable
997
- }] });
998
- const AXMVersionHistoryPopupWorkflow = {
999
- startStepId: 'start',
1000
- steps: {
1001
- start: {
1002
- action: 'show-version-history-popup-action',
1003
- },
1004
1207
  },
1005
1208
  };
1006
1209
 
1007
- class AXPVersionHistoryModule {
1008
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1009
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, imports: [i1$1.AXPWorkflowModule] }); }
1010
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, imports: [AXPWorkflowModule.forChild({
1210
+ class AXMLockSystemModule {
1211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1212
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, imports: [i1$1.AXPWorkflowModule] }); }
1213
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, providers: [
1214
+ { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
1215
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
1216
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
1217
+ ], imports: [AXPWorkflowModule.forChild({
1011
1218
  actions: {
1012
- 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
1219
+ AXMLockPopupWorkflowAction,
1220
+ AXMUnlockConfirmWorkflowAction,
1013
1221
  },
1014
1222
  workflows: {
1015
- 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
1223
+ 'lock-popup': AXMLockPopupWorkflow,
1224
+ 'unlock-confirm': AXMUnlockConfirmWorkflow,
1016
1225
  },
1017
1226
  })] }); }
1018
1227
  }
1019
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, decorators: [{
1228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, decorators: [{
1020
1229
  type: NgModule,
1021
1230
  args: [{
1022
1231
  imports: [
1023
1232
  AXPWorkflowModule.forChild({
1024
1233
  actions: {
1025
- 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
1234
+ AXMLockPopupWorkflowAction,
1235
+ AXMUnlockConfirmWorkflowAction,
1026
1236
  },
1027
1237
  workflows: {
1028
- 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
1238
+ 'lock-popup': AXMLockPopupWorkflow,
1239
+ 'unlock-confirm': AXMUnlockConfirmWorkflow,
1029
1240
  },
1030
1241
  }),
1031
1242
  ],
1032
- exports: [],
1243
+ providers: [
1244
+ { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
1245
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
1246
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
1247
+ ],
1033
1248
  }]
1034
1249
  }] });
1035
1250
 
1036
- class AXPDateTimeEvaluatorScopeProvider {
1037
- constructor() {
1038
- this.calendarService = inject(AXCalendarService);
1039
- }
1040
- async provide(context) {
1041
- context.addScope('date', {
1042
- today: () => {
1043
- return this.calendarService.now();
1044
- },
1045
- tomorrow: () => {
1046
- return this.calendarService.create(this.calendarService.now()).add('day', 1).startOf('day').date;
1047
- },
1048
- yesterday: () => {
1049
- return this.calendarService.create(this.calendarService.now()).add('day', -1).startOf('day').date;
1050
- },
1051
- addDays: (date, days) => {
1052
- return this.calendarService.create(date).add('day', days).date;
1053
- },
1054
- });
1055
- }
1056
- }
1057
-
1058
- class AXPTranslateEvaluatorScopeProvider {
1059
- constructor() {
1060
- this.translateService = inject(AXTranslationService);
1061
- }
1062
- async provide(context) {
1063
- context.addScope('translate', {
1064
- resolve: async (text, options) => {
1065
- return await this.translateService.translateAsync(text, options);
1066
- },
1067
- });
1068
- }
1069
- }
1070
-
1071
1251
  class AXMCommonModule {
1072
1252
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1073
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, imports: [AXPGlobalSearchModule,
1253
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, imports: [AXMLockSystemModule,
1254
+ AXPGlobalSearchModule,
1074
1255
  AXPWidgetsModule,
1075
1256
  AXPVersionHistoryModule,
1076
- AXPCompareModule, i1$1.AXPWorkflowModule] }); }
1257
+ AXPCompareModule] }); }
1077
1258
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, providers: [
1078
1259
  {
1079
1260
  provide: AXP_MENU_PROVIDER,
@@ -1100,11 +1281,6 @@ class AXMCommonModule {
1100
1281
  useClass: AXMPermissionDefinitionProvider,
1101
1282
  multi: true,
1102
1283
  },
1103
- {
1104
- provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1105
- useClass: AXMLockEvaluatorScopeProvider,
1106
- multi: true,
1107
- },
1108
1284
  {
1109
1285
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1110
1286
  useClass: AXPDateTimeEvaluatorScopeProvider,
@@ -1115,39 +1291,21 @@ class AXMCommonModule {
1115
1291
  useClass: AXPTranslateEvaluatorScopeProvider,
1116
1292
  multi: true,
1117
1293
  },
1118
- ], imports: [AXPGlobalSearchModule,
1294
+ ], imports: [AXMLockSystemModule,
1295
+ AXPGlobalSearchModule,
1119
1296
  AXPWidgetsModule,
1120
1297
  AXPVersionHistoryModule,
1121
- AXPCompareModule,
1122
- AXPWorkflowModule.forChild({
1123
- actions: {
1124
- AXMLockPopupWorkflowAction,
1125
- AXMUnlockConfirmWorkflowAction,
1126
- },
1127
- workflows: {
1128
- 'lock-popup': AXMLockPopupWorkflow,
1129
- 'unlock-confirm': AXMUnlockConfirmWorkflow,
1130
- },
1131
- })] }); }
1298
+ AXPCompareModule] }); }
1132
1299
  }
1133
1300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, decorators: [{
1134
1301
  type: NgModule,
1135
1302
  args: [{
1136
1303
  imports: [
1304
+ AXMLockSystemModule,
1137
1305
  AXPGlobalSearchModule,
1138
1306
  AXPWidgetsModule,
1139
1307
  AXPVersionHistoryModule,
1140
1308
  AXPCompareModule,
1141
- AXPWorkflowModule.forChild({
1142
- actions: {
1143
- AXMLockPopupWorkflowAction,
1144
- AXMUnlockConfirmWorkflowAction,
1145
- },
1146
- workflows: {
1147
- 'lock-popup': AXMLockPopupWorkflow,
1148
- 'unlock-confirm': AXMUnlockConfirmWorkflow,
1149
- },
1150
- }),
1151
1309
  ],
1152
1310
  exports: [],
1153
1311
  declarations: [],
@@ -1177,11 +1335,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1177
1335
  useClass: AXMPermissionDefinitionProvider,
1178
1336
  multi: true,
1179
1337
  },
1180
- {
1181
- provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1182
- useClass: AXMLockEvaluatorScopeProvider,
1183
- multi: true,
1184
- },
1185
1338
  {
1186
1339
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1187
1340
  useClass: AXPDateTimeEvaluatorScopeProvider,
@@ -1238,6 +1391,121 @@ const AXPWidgetsList = {
1238
1391
  },
1239
1392
  };
1240
1393
 
1394
+ class AXPLockPopupComponent extends AXBasePageComponent {
1395
+ constructor() {
1396
+ super(...arguments);
1397
+ //#endregion
1398
+ //#region ---- Signals & Services ----
1399
+ this.isBusy = signal(false, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
1400
+ this.form = viewChild.required('form');
1401
+ this.lockService = inject(AXPLockService);
1402
+ this.sessionService = inject(AXPSessionService);
1403
+ this.translationService = inject(AXTranslationService);
1404
+ //#endregion
1405
+ //#region ---- Form Data ----
1406
+ this.duration = '1h';
1407
+ this.reason = '';
1408
+ this.lockDurations = [];
1409
+ }
1410
+ async ngOnInit() {
1411
+ // Load translated duration options
1412
+ this.lockDurations = [
1413
+ {
1414
+ value: '1h',
1415
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.1h'),
1416
+ hours: 1
1417
+ },
1418
+ {
1419
+ value: '1d',
1420
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.1d'),
1421
+ hours: 24
1422
+ },
1423
+ {
1424
+ value: 'infinite',
1425
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.infinite')
1426
+ }
1427
+ ];
1428
+ }
1429
+ //#endregion
1430
+ //#region ---- UI Handlers ----
1431
+ async handleConfirm() {
1432
+ if (this.isBusy()) {
1433
+ return;
1434
+ }
1435
+ // Validate form
1436
+ const validation = await this.form().validate();
1437
+ if (!validation.result) {
1438
+ return;
1439
+ }
1440
+ // Ensure duration is selected
1441
+ if (!this.duration) {
1442
+ return;
1443
+ }
1444
+ this.isBusy.set(true);
1445
+ try {
1446
+ const selectedDuration = this.lockDurations.find(d => d.value === this.duration);
1447
+ const expireAt = selectedDuration?.hours
1448
+ ? new Date(Date.now() + selectedDuration.hours * 60 * 60 * 1000)
1449
+ : undefined; // undefined means infinite
1450
+ await this.lockService.lock({
1451
+ refId: this.refId,
1452
+ refType: this.refType,
1453
+ type: 'user',
1454
+ date: new Date().toISOString(),
1455
+ expireAt: expireAt,
1456
+ lockedBy: {
1457
+ id: this.sessionService.user?.id ?? 'system',
1458
+ type: 'oidc.users',
1459
+ },
1460
+ });
1461
+ // Close and notify success
1462
+ this.close({
1463
+ isCanceled: false,
1464
+ duration: this.duration,
1465
+ reason: this.reason
1466
+ });
1467
+ }
1468
+ catch (error) {
1469
+ console.error(error);
1470
+ // TODO: show error toast if required
1471
+ }
1472
+ finally {
1473
+ this.isBusy.set(false);
1474
+ }
1475
+ }
1476
+ handleCancel() {
1477
+ this.close({ isCanceled: true });
1478
+ }
1479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.6", type: AXPLockPopupComponent, isStandalone: true, selector: "axp-lock-popup", viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content *translate=\"let t\">\n <div class=\"ax-p-6\">\n <ax-form #form>\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n <!-- Lock Duration Selection -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('@lock-system:lock.duration.title') | async }}</ax-label>\n <ax-select-box\n [(ngModel)]=\"duration\"\n [dataSource]=\"lockDurations\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n name=\"duration\"\n class=\"ax-w-full\"\n >\n <ax-validation-rule rule=\"required\" message=\"This field is required\"></ax-validation-rule>\n </ax-select-box>\n </ax-form-field>\n\n <!-- Optional Reason -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('@lock-system:lock.reason.title') | async }}</ax-label>\n <ax-text-area\n [(ngModel)]=\"reason\"\n [placeholder]=\"t('@lock-system:lock.reason.placeholder') | async\"\n name=\"reason\"\n class=\"ax-w-full ax-min-h-20\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-area>\n </ax-form-field>\n </div>\n </ax-form>\n </div>\n</ax-content>\n\n<ax-footer *translate=\"let t\">\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"t('@lock-system:lock.dialog.cancel') | async\"\n (onClick)=\"handleCancel()\"\n [disabled]=\"isBusy()\"\n ></ax-button>\n <ax-button\n [text]=\"t('@lock-system:lock.dialog.confirm') | async\"\n color=\"primary\"\n look=\"solid\"\n (onClick)=\"handleConfirm()\"\n [disabled]=\"isBusy()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n", styles: [""], dependencies: [{ kind: "ngmodule", type:
1481
+ // Angular
1482
+ CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
1483
+ // ACoreX
1484
+ AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i4$1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i4$1.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i4$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i6.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i7.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
1485
+ }
1486
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, decorators: [{
1487
+ type: Component,
1488
+ args: [{ selector: 'axp-lock-popup', standalone: true, imports: [
1489
+ // Angular
1490
+ CommonModule,
1491
+ FormsModule,
1492
+ // ACoreX
1493
+ AXButtonModule,
1494
+ AXDecoratorModule,
1495
+ AXFormModule,
1496
+ AXLabelModule,
1497
+ AXSelectBoxModule,
1498
+ AXTextAreaModule,
1499
+ AXTranslationModule,
1500
+ AXValidationModule,
1501
+ ], encapsulation: ViewEncapsulation.None, template: "<ax-content *translate=\"let t\">\n <div class=\"ax-p-6\">\n <ax-form #form>\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n <!-- Lock Duration Selection -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('@lock-system:lock.duration.title') | async }}</ax-label>\n <ax-select-box\n [(ngModel)]=\"duration\"\n [dataSource]=\"lockDurations\"\n [valueField]=\"'value'\"\n [textField]=\"'text'\"\n name=\"duration\"\n class=\"ax-w-full\"\n >\n <ax-validation-rule rule=\"required\" message=\"This field is required\"></ax-validation-rule>\n </ax-select-box>\n </ax-form-field>\n\n <!-- Optional Reason -->\n <ax-form-field class=\"ax-col-span-12\">\n <ax-label>{{ t('@lock-system:lock.reason.title') | async }}</ax-label>\n <ax-text-area\n [(ngModel)]=\"reason\"\n [placeholder]=\"t('@lock-system:lock.reason.placeholder') | async\"\n name=\"reason\"\n class=\"ax-w-full ax-min-h-20\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-text-area>\n </ax-form-field>\n </div>\n </ax-form>\n </div>\n</ax-content>\n\n<ax-footer *translate=\"let t\">\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button\n [text]=\"t('@lock-system:lock.dialog.cancel') | async\"\n (onClick)=\"handleCancel()\"\n [disabled]=\"isBusy()\"\n ></ax-button>\n <ax-button\n [text]=\"t('@lock-system:lock.dialog.confirm') | async\"\n color=\"primary\"\n look=\"solid\"\n (onClick)=\"handleConfirm()\"\n [disabled]=\"isBusy()\"\n >\n </ax-button>\n </ax-suffix>\n</ax-footer>\n" }]
1502
+ }] });
1503
+
1504
+ var index = /*#__PURE__*/Object.freeze({
1505
+ __proto__: null,
1506
+ AXPLockPopupComponent: AXPLockPopupComponent
1507
+ });
1508
+
1241
1509
  /**
1242
1510
  * Generated bundle index. Do not edit.
1243
1511
  */