@acorex/modules 20.2.3 → 20.2.4-next.1

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 (244) hide show
  1. package/auth/index.d.ts +1 -0
  2. package/common/index.d.ts +30 -19
  3. package/contact-management/index.d.ts +0 -6
  4. package/conversation/index.d.ts +8 -0
  5. package/dashboard-management/index.d.ts +3 -79
  6. package/data-management/index.d.ts +2 -69
  7. package/document-management/index.d.ts +47 -29
  8. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BBGqLgJC.mjs → acorex-modules-auth-acorex-modules-auth-C3KbvhSU.mjs} +18 -14
  9. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BBGqLgJC.mjs.map → acorex-modules-auth-acorex-modules-auth-C3KbvhSU.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-auth-app-chooser.component-B7Nv62Jj.mjs → acorex-modules-auth-app-chooser.component-1rAktuKq.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-auth-app-chooser.component-B7Nv62Jj.mjs.map → acorex-modules-auth-app-chooser.component-1rAktuKq.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-auth-login.module-DmEDBKqL.mjs → acorex-modules-auth-login.module-Bq2itSg_.mjs} +4 -4
  13. package/fesm2022/{acorex-modules-auth-login.module-DmEDBKqL.mjs.map → acorex-modules-auth-login.module-Bq2itSg_.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-auth-master.layout-B8L2FPDN.mjs → acorex-modules-auth-master.layout-DONbu77t.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-auth-master.layout-B8L2FPDN.mjs.map → acorex-modules-auth-master.layout-DONbu77t.mjs.map} +1 -1
  16. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BRJu8jom.mjs → acorex-modules-auth-oauth-callback.component-BgzmfTlY.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-auth-oauth-callback.component-BRJu8jom.mjs.map → acorex-modules-auth-oauth-callback.component-BgzmfTlY.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-auth-password.component-Bh0uhx6-.mjs → acorex-modules-auth-password.component-B9LqFrEG.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-auth-password.component-Bh0uhx6-.mjs.map → acorex-modules-auth-password.component-B9LqFrEG.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-auth-password.component-FNLwhWMe.mjs → acorex-modules-auth-password.component-BuGTsfLH.mjs} +3 -3
  21. package/fesm2022/acorex-modules-auth-password.component-BuGTsfLH.mjs.map +1 -0
  22. package/fesm2022/{acorex-modules-auth-routes-xqc264U-.mjs → acorex-modules-auth-routes-833kPM6o.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-auth-routes-xqc264U-.mjs.map → acorex-modules-auth-routes-833kPM6o.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-auth-two-factor.module-C8jrenEW.mjs → acorex-modules-auth-two-factor.module-BS1Pcbxp.mjs} +2 -2
  25. package/fesm2022/{acorex-modules-auth-two-factor.module-C8jrenEW.mjs.map → acorex-modules-auth-two-factor.module-BS1Pcbxp.mjs.map} +1 -1
  26. package/fesm2022/acorex-modules-auth-user-sessions.component-BXHfWAbP.mjs +137 -0
  27. package/fesm2022/acorex-modules-auth-user-sessions.component-BXHfWAbP.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-auth.mjs +1 -1
  29. package/fesm2022/acorex-modules-calendar-management.mjs +12 -40
  30. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  31. package/fesm2022/acorex-modules-common-manage-extra-properties-popup.component-BgXwb8Su.mjs +71 -0
  32. package/fesm2022/acorex-modules-common-manage-extra-properties-popup.component-BgXwb8Su.mjs.map +1 -0
  33. package/fesm2022/acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs +47 -0
  34. package/fesm2022/acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs.map +1 -0
  35. package/fesm2022/{acorex-modules-common-search-popup.component-39U0-TIj.mjs → acorex-modules-common-search-popup.component-BSQyjDKA.mjs} +8 -8
  36. package/fesm2022/{acorex-modules-common-search-popup.component-39U0-TIj.mjs.map → acorex-modules-common-search-popup.component-BSQyjDKA.mjs.map} +1 -1
  37. package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs → acorex-modules-common-timeline-version-history-popup.component-ByAc4Yp9.mjs} +5 -5
  38. package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-_KJd8oGw.mjs.map → acorex-modules-common-timeline-version-history-popup.component-ByAc4Yp9.mjs.map} +1 -1
  39. package/fesm2022/acorex-modules-common.mjs +1037 -328
  40. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  41. package/fesm2022/{acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs → acorex-modules-contact-management-contact-method.entity-DR6V9Nox.mjs} +15 -41
  42. package/fesm2022/acorex-modules-contact-management-contact-method.entity-DR6V9Nox.mjs.map +1 -0
  43. package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs → acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs} +13 -90
  44. package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-D75qsDor.mjs.map +1 -0
  45. package/fesm2022/acorex-modules-contact-management.mjs +793 -1
  46. package/fesm2022/acorex-modules-contact-management.mjs.map +1 -1
  47. package/fesm2022/acorex-modules-content-management.mjs +59 -447
  48. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  49. package/fesm2022/acorex-modules-conversation.mjs +199 -24
  50. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  51. package/fesm2022/acorex-modules-dashboard-management.mjs +35 -331
  52. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  53. package/fesm2022/acorex-modules-data-management.mjs +157 -1006
  54. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  55. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BvIGh15O.mjs → acorex-modules-document-management-acorex-modules-document-management-BCTTw-hI.mjs} +871 -266
  56. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BCTTw-hI.mjs.map +1 -0
  57. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-ClgS3Q8D.mjs → acorex-modules-document-management-attachment-widget.component-C80j1Gn7.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-ClgS3Q8D.mjs.map → acorex-modules-document-management-attachment-widget.component-C80j1Gn7.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs → acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BWMANjYL.mjs.map → acorex-modules-document-management-create-folder-dialog.component-BFnvHSjH.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-details-view.component-BmJB8bb8.mjs → acorex-modules-document-management-details-view.component-7OR6bXr-.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-document-management-details-view.component-BmJB8bb8.mjs.map → acorex-modules-document-management-details-view.component-7OR6bXr-.mjs.map} +1 -1
  63. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs +116 -0
  64. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs → acorex-modules-document-management-document-signature-popup.component-BOjb2k4S.mjs} +42 -2
  66. package/fesm2022/acorex-modules-document-management-document-signature-popup.component-BOjb2k4S.mjs.map +1 -0
  67. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs → acorex-modules-document-management-drive-choose.component-B66hegSh.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DoUkm43Y.mjs.map → acorex-modules-document-management-drive-choose.component-B66hegSh.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-document-management-drive.component-R1V4W9u3.mjs → acorex-modules-document-management-drive.component-DZhd1DUn.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-document-management-drive.component-R1V4W9u3.mjs.map → acorex-modules-document-management-drive.component-DZhd1DUn.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C-9UNa_X.mjs → acorex-modules-document-management-large-icons-view.component-DJn6kyvL.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C-9UNa_X.mjs.map → acorex-modules-document-management-large-icons-view.component-DJn6kyvL.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DL3PEFfv.mjs → acorex-modules-document-management-large-tiles-view.component-BeR4aIqh.mjs} +2 -2
  74. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DL3PEFfv.mjs.map → acorex-modules-document-management-large-tiles-view.component-BeR4aIqh.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-document-management-list-view.component-BGUDmglV.mjs → acorex-modules-document-management-list-view.component-oDeeGScM.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-document-management-list-view.component-BGUDmglV.mjs.map → acorex-modules-document-management-list-view.component-oDeeGScM.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs → acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs} +7 -7
  78. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs.map +1 -0
  79. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs → acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-Cbwf5Ved.mjs.map → acorex-modules-document-management-permission-definition.provider-CMEJt7pe.mjs.map} +1 -1
  81. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DXiQj-Hb.mjs → acorex-modules-document-management-rename-node-dialog.component-Da9v8nVj.mjs} +2 -2
  82. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DXiQj-Hb.mjs.map → acorex-modules-document-management-rename-node-dialog.component-Da9v8nVj.mjs.map} +1 -1
  83. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-C8RZC3TM.mjs → acorex-modules-document-management-small-icons-view.component-Wfms-st6.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-C8RZC3TM.mjs.map → acorex-modules-document-management-small-icons-view.component-Wfms-st6.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B70rSvao.mjs → acorex-modules-document-management-small-tiles-view.component-DSDfR1nj.mjs} +2 -2
  86. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-B70rSvao.mjs.map → acorex-modules-document-management-small-tiles-view.component-DSDfR1nj.mjs.map} +1 -1
  87. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  88. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs} +36 -86
  89. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs.map +1 -0
  90. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs → acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs} +2 -2
  91. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-CfOa446m.mjs.map → acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs.map} +1 -1
  92. package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs → acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-form-template-management-settings.provider-hLlHnm-I.mjs.map → acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs → acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs} +6 -5
  95. package/fesm2022/acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs.map +1 -0
  96. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs → acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs} +2 -2
  97. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-D_Ys5kRT.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs.map} +1 -1
  98. package/fesm2022/{acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs → acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs} +23 -97
  99. package/fesm2022/acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs.map +1 -0
  100. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs → acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs} +2 -2
  101. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CE13nuke.mjs.map → acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs.map} +1 -1
  102. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  103. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-8iEAzfh5.mjs → acorex-modules-help-desk-acorex-modules-help-desk-Bvoh_GpG.mjs} +5 -11
  104. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-Bvoh_GpG.mjs.map +1 -0
  105. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BiJX9lxr.mjs → acorex-modules-help-desk-capture-screen.component-DIMqm4q_.mjs} +2 -2
  106. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-BiJX9lxr.mjs.map → acorex-modules-help-desk-capture-screen.component-DIMqm4q_.mjs.map} +1 -1
  107. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  108. package/fesm2022/acorex-modules-identifier-management.mjs +81 -39
  109. package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
  110. package/fesm2022/acorex-modules-location-management.mjs +20 -32
  111. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  112. package/fesm2022/acorex-modules-log-management.mjs +1 -2
  113. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  114. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs +121 -0
  115. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +1 -0
  116. package/fesm2022/acorex-modules-meeting-management.mjs +2897 -0
  117. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -0
  118. package/fesm2022/acorex-modules-notification-management-notification-page.component-BUslAF8w.mjs +855 -0
  119. package/fesm2022/acorex-modules-notification-management-notification-page.component-BUslAF8w.mjs.map +1 -0
  120. package/fesm2022/acorex-modules-notification-management.mjs +151 -132
  121. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  122. package/fesm2022/{acorex-modules-organization-management-branch.entity-CHp5WtIF.mjs → acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs} +14 -42
  123. package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs.map +1 -0
  124. package/fesm2022/{acorex-modules-organization-management-chart.entity-UAn44WCP.mjs → acorex-modules-organization-management-chart.entity-8J9I9lgq.mjs} +14 -42
  125. package/fesm2022/acorex-modules-organization-management-chart.entity-8J9I9lgq.mjs.map +1 -0
  126. package/fesm2022/{acorex-modules-organization-management-company.entity-D1A1HSkC.mjs → acorex-modules-organization-management-company.entity-BBNM-Ihr.mjs} +14 -42
  127. package/fesm2022/acorex-modules-organization-management-company.entity-BBNM-Ihr.mjs.map +1 -0
  128. package/fesm2022/{acorex-modules-organization-management-department.entity-BxCyXNtv.mjs → acorex-modules-organization-management-department.entity-BbBrK4BN.mjs} +14 -42
  129. package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs.map +1 -0
  130. package/fesm2022/{acorex-modules-organization-management-division.entity-DzQT2jpz.mjs → acorex-modules-organization-management-division.entity-DdX7LcCU.mjs} +14 -42
  131. package/fesm2022/acorex-modules-organization-management-division.entity-DdX7LcCU.mjs.map +1 -0
  132. package/fesm2022/{acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs → acorex-modules-organization-management-employee.entity-zDTyY9NK.mjs} +166 -99
  133. package/fesm2022/acorex-modules-organization-management-employee.entity-zDTyY9NK.mjs.map +1 -0
  134. package/fesm2022/{acorex-modules-organization-management-employment-type.entity-h9Hua7Xe.mjs → acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs} +14 -42
  135. package/fesm2022/acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs.map +1 -0
  136. package/fesm2022/{acorex-modules-organization-management-role.entity-CruQeObl.mjs → acorex-modules-organization-management-position.entity-DT7EyvrR.mjs} +96 -79
  137. package/fesm2022/acorex-modules-organization-management-position.entity-DT7EyvrR.mjs.map +1 -0
  138. package/fesm2022/{acorex-modules-organization-management-responsibility-category.entity-tJFpEylO.mjs → acorex-modules-organization-management-responsibility.entity-DpUTLjdp.mjs} +19 -91
  139. package/fesm2022/acorex-modules-organization-management-responsibility.entity-DpUTLjdp.mjs.map +1 -0
  140. package/fesm2022/{acorex-modules-organization-management-role-category.entity-CAljzQcH.mjs → acorex-modules-organization-management-role.entity-BdjgFsgo.mjs} +68 -51
  141. package/fesm2022/acorex-modules-organization-management-role.entity-BdjgFsgo.mjs.map +1 -0
  142. package/fesm2022/{acorex-modules-organization-management-skill.entity-DoAsCzm9.mjs → acorex-modules-organization-management-skill.entity-O1453j6I.mjs} +14 -105
  143. package/fesm2022/acorex-modules-organization-management-skill.entity-O1453j6I.mjs.map +1 -0
  144. package/fesm2022/{acorex-modules-organization-management-team.entity-DMCfAZsr.mjs → acorex-modules-organization-management-team.entity-DkRLWl0u.mjs} +13 -32
  145. package/fesm2022/acorex-modules-organization-management-team.entity-DkRLWl0u.mjs.map +1 -0
  146. package/fesm2022/acorex-modules-organization-management.mjs +34 -254
  147. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  148. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs → acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs} +11 -21
  149. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs.map +1 -0
  150. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs → acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs} +20 -19
  151. package/fesm2022/acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs.map +1 -0
  152. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs → acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs} +16 -17
  153. package/fesm2022/acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs.map +1 -0
  154. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs → acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs} +9 -14
  155. package/fesm2022/acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs.map +1 -0
  156. package/fesm2022/{acorex-modules-party-management-party-role.entity-C5BeakjX.mjs → acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs} +14 -17
  157. package/fesm2022/acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs.map +1 -0
  158. package/fesm2022/{acorex-modules-party-management-party.entity-Blwg8o3o.mjs → acorex-modules-party-management-party.entity-BwAAZRJc.mjs} +45 -45
  159. package/fesm2022/acorex-modules-party-management-party.entity-BwAAZRJc.mjs.map +1 -0
  160. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  161. package/fesm2022/acorex-modules-platform-management.mjs +3 -3
  162. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  163. package/fesm2022/acorex-modules-project-management.mjs +157 -144
  164. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  165. 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
  166. package/fesm2022/acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs.map +1 -0
  167. package/fesm2022/acorex-modules-report-management.mjs +57 -58
  168. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  169. package/fesm2022/acorex-modules-scheduler-job-management.mjs +6 -7
  170. package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
  171. package/fesm2022/acorex-modules-security-management.mjs +12 -10
  172. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  173. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs → acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs} +11 -1
  174. package/fesm2022/acorex-modules-settings-management-setting-page.component-D-NKWNvS.mjs.map +1 -0
  175. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  176. package/fesm2022/{acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs → acorex-modules-task-management-task-board.page-BBbHu2jz.mjs} +314 -69
  177. package/fesm2022/acorex-modules-task-management-task-board.page-BBbHu2jz.mjs.map +1 -0
  178. package/fesm2022/acorex-modules-task-management.mjs +3471 -2888
  179. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  180. package/fesm2022/acorex-modules-text-template-management.mjs +4 -6
  181. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
  182. package/fesm2022/acorex-modules-training-management.mjs +35 -35
  183. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  184. package/fesm2022/acorex-modules-workflow-management.mjs +39 -1
  185. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  186. package/form-template-management/index.d.ts +8 -31
  187. package/identifier-management/index.d.ts +15 -16
  188. package/meeting-management/README.md +29 -0
  189. package/meeting-management/index.d.ts +248 -0
  190. package/notification-management/index.d.ts +6 -4
  191. package/organization-management/index.d.ts +3 -111
  192. package/package.json +5 -1
  193. package/task-management/README.md +1 -1
  194. package/task-management/index.d.ts +109 -3
  195. package/workflow-management/index.d.ts +4 -33
  196. package/fesm2022/acorex-modules-auth-password.component-FNLwhWMe.mjs.map +0 -1
  197. package/fesm2022/acorex-modules-auth-user-sessions.component-Cu1SCNnF.mjs +0 -135
  198. package/fesm2022/acorex-modules-auth-user-sessions.component-Cu1SCNnF.mjs.map +0 -1
  199. package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs +0 -863
  200. package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-_Bxallkg.mjs.map +0 -1
  201. package/fesm2022/acorex-modules-contact-management-contact-method.entity-CIeZtPSy.mjs.map +0 -1
  202. package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs +0 -680
  203. package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-B2DPfonq.mjs.map +0 -1
  204. package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-CeIealVy.mjs.map +0 -1
  205. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BvIGh15O.mjs.map +0 -1
  206. package/fesm2022/acorex-modules-document-management-document-signature-popup.component-CK8MX49w.mjs.map +0 -1
  207. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BZu8EbTh.mjs.map +0 -1
  208. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CeQnu6WW.mjs.map +0 -1
  209. package/fesm2022/acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs +0 -245
  210. package/fesm2022/acorex-modules-form-template-management-category.entity-DmrE2Pfz.mjs.map +0 -1
  211. package/fesm2022/acorex-modules-form-template-management-template-picker.component-bxYZqmYR.mjs.map +0 -1
  212. package/fesm2022/acorex-modules-form-template-management-template.entity-CvlwS8TY.mjs.map +0 -1
  213. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-8iEAzfh5.mjs.map +0 -1
  214. package/fesm2022/acorex-modules-organization-management-branch.entity-CHp5WtIF.mjs.map +0 -1
  215. package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +0 -1
  216. package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +0 -1
  217. package/fesm2022/acorex-modules-organization-management-department.entity-BxCyXNtv.mjs.map +0 -1
  218. package/fesm2022/acorex-modules-organization-management-division.entity-DzQT2jpz.mjs.map +0 -1
  219. package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +0 -1
  220. package/fesm2022/acorex-modules-organization-management-employment-type.entity-h9Hua7Xe.mjs.map +0 -1
  221. package/fesm2022/acorex-modules-organization-management-position-category.entity-CIir9UMg.mjs +0 -305
  222. package/fesm2022/acorex-modules-organization-management-position-category.entity-CIir9UMg.mjs.map +0 -1
  223. package/fesm2022/acorex-modules-organization-management-position.entity-BpkjUsoZ.mjs +0 -526
  224. package/fesm2022/acorex-modules-organization-management-position.entity-BpkjUsoZ.mjs.map +0 -1
  225. package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-tJFpEylO.mjs.map +0 -1
  226. package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmKSoxpL.mjs +0 -338
  227. package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmKSoxpL.mjs.map +0 -1
  228. package/fesm2022/acorex-modules-organization-management-role-category.entity-CAljzQcH.mjs.map +0 -1
  229. package/fesm2022/acorex-modules-organization-management-role.entity-CruQeObl.mjs.map +0 -1
  230. package/fesm2022/acorex-modules-organization-management-skill-category.entity-iIbc-pjJ.mjs +0 -305
  231. package/fesm2022/acorex-modules-organization-management-skill-category.entity-iIbc-pjJ.mjs.map +0 -1
  232. package/fesm2022/acorex-modules-organization-management-skill.entity-DoAsCzm9.mjs.map +0 -1
  233. package/fesm2022/acorex-modules-organization-management-team.entity-DMCfAZsr.mjs.map +0 -1
  234. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-B8X8tXFw.mjs.map +0 -1
  235. package/fesm2022/acorex-modules-party-management-party-identifier-type.entity-b8aNBCpT.mjs.map +0 -1
  236. package/fesm2022/acorex-modules-party-management-party-identifier.entity-B_5MSDF1.mjs.map +0 -1
  237. package/fesm2022/acorex-modules-party-management-party-relationship.entity-CLAAuCde.mjs.map +0 -1
  238. package/fesm2022/acorex-modules-party-management-party-role.entity-C5BeakjX.mjs.map +0 -1
  239. package/fesm2022/acorex-modules-party-management-party.entity-Blwg8o3o.mjs.map +0 -1
  240. package/fesm2022/acorex-modules-report-management-report-create-root.component-CPR6H1R1.mjs.map +0 -1
  241. package/fesm2022/acorex-modules-settings-management-setting-page.component-BWXHxXwS.mjs.map +0 -1
  242. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs +0 -244
  243. package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-BfE17ZXY.mjs.map +0 -1
  244. package/fesm2022/acorex-modules-workflow-management-task-board.page-2UTqXn3s.mjs.map +0 -1
@@ -1,30 +1,32 @@
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, createAllQueryView, AXPEntityQueryType, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
4
3
  import * as i0 from '@angular/core';
5
- import { inject, Injector, Injectable, input, signal, ViewEncapsulation, Component, NgModule, InjectionToken, HostListener, computed, viewChild } from '@angular/core';
4
+ import { inject, Injectable, input, signal, ViewEncapsulation, Component, NgModule, InjectionToken, HostListener, computed, Injector, runInInjectionContext, viewChild } from '@angular/core';
6
5
  import { firstValueFrom, Subject } from 'rxjs';
7
6
  import * as i1$2 from '@acorex/platform/core';
8
- import { objectKeyValueTransforms, AXPPlatformScope, AXPActivityLogService, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';
7
+ import { objectKeyValueTransforms, AXPPlatformScope, AXPActivityLogService, AXPSystemActionType, extractTextFromHtml, AXPDataGenerator, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER } from '@acorex/platform/core';
9
8
  import * as i4 from '@acorex/core/translation';
10
9
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
11
10
  import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
12
11
  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
- import * as i1 from '@angular/common';
12
+ import * as i3 from '@angular/common';
16
13
  import { CommonModule } from '@angular/common';
17
14
  import * as i2 from '@acorex/components/button';
18
15
  import { AXButtonModule } from '@acorex/components/button';
19
16
  import { AXBasePageComponent } from '@acorex/components/page';
20
- import * as i3 from '@acorex/components/decorators';
17
+ import * as i1 from '@acorex/components/decorators';
21
18
  import { AXDecoratorModule } from '@acorex/components/decorators';
22
19
  import * as i2$1 from '@acorex/platform/layout/components';
23
- import { AXPCompareViewComponent, AXPComponentSlotModule } from '@acorex/platform/layout/components';
20
+ import { AXPCompareViewComponent, AXPComponentSlotModule, AXP_EXTRA_PROPERTY_TYPES } from '@acorex/platform/layout/components';
21
+ import * as i1$1 from '@acorex/platform/workflow';
22
+ import { AXPWorkflowAction, AXPWorkflowModule, AXPWorkflowService } from '@acorex/platform/workflow';
24
23
  import { AXPopupService } from '@acorex/components/popup';
24
+ import { AXPEntityDefinitionRegistryService, AXP_ENTITY_STORAGE_BACKEND, detectEntityChanges, ensureListActions, actionExists, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_ENTITY_ACTION_PLUGIN, AXMEntityCrudServiceImpl, entityMasterCrudActions, entityMasterDeleteAction, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
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';
29
+ import { provideCommandSetups } from '@acorex/platform/runtime';
28
30
  import * as i1$3 from '@angular/forms';
29
31
  import { FormsModule } from '@angular/forms';
30
32
  import * as i4$1 from '@acorex/components/form';
@@ -36,7 +38,6 @@ import { AXSelectBoxModule } from '@acorex/components/select-box';
36
38
  import * as i7 from '@acorex/components/text-area';
37
39
  import { AXTextAreaModule } from '@acorex/components/text-area';
38
40
  import { AXValidationModule } from '@acorex/core/validation';
39
- import { AXCalendarService } from '@acorex/core/date-time';
40
41
 
41
42
  const config = {
42
43
  i18n: 'common',
@@ -52,31 +53,6 @@ const RootConfig = {
52
53
  entities: {},
53
54
  };
54
55
 
55
- class AXMEntityProvider {
56
- constructor() {
57
- this.injector = inject(Injector);
58
- }
59
- preload() {
60
- const module = RootConfig.module.name;
61
- return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
62
- module: module,
63
- entity: entity.name,
64
- }));
65
- }
66
- async get(moduleName, entityName) {
67
- if (moduleName == RootConfig.module.name) {
68
- switch (entityName) {
69
- }
70
- }
71
- return null;
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
74
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityProvider }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityProvider, decorators: [{
77
- type: Injectable
78
- }] });
79
-
80
56
  class AXMMenuProvider {
81
57
  constructor() {
82
58
  this.sessionService = inject(AXPSessionService);
@@ -116,7 +92,7 @@ class AXMMenuProvider {
116
92
  context.addItems([
117
93
  {
118
94
  name: 'tenant-application-settings',
119
- priority: 10000,
95
+ priority: 10000000,
120
96
  text: `t('tenant.title', {scope: "settings"})`,
121
97
  type: 'menu',
122
98
  icon: 'fa-light fa-gear',
@@ -217,9 +193,9 @@ class AXPComparePopupComponent extends AXBasePageComponent {
217
193
  // Angular
218
194
  CommonModule }, { kind: "ngmodule", type:
219
195
  // ACoreX
220
- AXDecoratorModule }, { 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: 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: AXTranslationModule }, { kind: "component", type:
196
+ AXDecoratorModule }, { kind: "component", type: i1.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: 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: AXTranslationModule }, { kind: "component", type:
221
197
  // Compare View
222
- AXPCompareViewComponent, selector: "axp-compare-view", inputs: ["inputs", "mode"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
198
+ AXPCompareViewComponent, selector: "axp-compare-view", inputs: ["inputs", "mode"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
223
199
  }
224
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPComparePopupComponent, decorators: [{
225
201
  type: Component,
@@ -472,7 +448,7 @@ class AXPGlobalSearchSlotComponent {
472
448
  </div>
473
449
  <kbd class="ax-text-sm">Ctrl+K</kbd>
474
450
  </div>
475
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: 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.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
451
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: 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: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
476
452
  }
477
453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
478
454
  type: Component,
@@ -546,7 +522,7 @@ class AXPGlobalSearchModule {
546
522
  {
547
523
  provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
548
524
  useValue: {
549
- window: () => import('./acorex-modules-common-search-popup.component-39U0-TIj.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
525
+ window: () => import('./acorex-modules-common-search-popup.component-BSQyjDKA.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
550
526
  },
551
527
  },
552
528
  ], imports: [AXPComponentSlotModule.forChild({
@@ -597,7 +573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
597
573
  {
598
574
  provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
599
575
  useValue: {
600
- window: () => import('./acorex-modules-common-search-popup.component-39U0-TIj.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
576
+ window: () => import('./acorex-modules-common-search-popup.component-BSQyjDKA.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
601
577
  },
602
578
  },
603
579
  ]
@@ -706,15 +682,322 @@ class AXPGlobalSearchViewModel {
706
682
  }
707
683
  }
708
684
 
685
+ class AXMVersionHistoryPopupStartAction extends AXPWorkflowAction {
686
+ constructor() {
687
+ super(...arguments);
688
+ this.popupService = inject(AXPopupService);
689
+ this.translate = inject(AXTranslationService);
690
+ }
691
+ async execute(context) {
692
+ const comp = (await import('./acorex-modules-common-timeline-version-history-popup.component-ByAc4Yp9.mjs')).AXMTimelineVersionHistoryPopupComponent;
693
+ this.popupService.open(comp, {
694
+ title: await this.translate.translateAsync('@activity-log:actions.view-history'),
695
+ data: {
696
+ refId: context.getVariable('options.refId'),
697
+ refType: context.getVariable('options.refType'),
698
+ fromDate: context.getVariable('options.fromDate'),
699
+ toDate: context.getVariable('options.toDate'),
700
+ limit: context.getVariable('options.limit'),
701
+ offset: context.getVariable('options.offset'),
702
+ },
703
+ });
704
+ }
705
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
706
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction }); }
707
+ }
708
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMVersionHistoryPopupStartAction, decorators: [{
709
+ type: Injectable
710
+ }] });
711
+ const AXMVersionHistoryPopupWorkflow = {
712
+ startStepId: 'start',
713
+ steps: {
714
+ start: {
715
+ action: 'show-version-history-popup-action',
716
+ },
717
+ },
718
+ };
719
+
720
+ const historyLoggerMiddleware = {
721
+ target: { ops: ['create', 'update', 'delete'], order: 80 },
722
+ execute: async (ctx, next) => {
723
+ const entityRegistry = inject(AXPEntityDefinitionRegistryService);
724
+ const sessionService = inject(AXPSessionService);
725
+ const backend = inject(AXP_ENTITY_STORAGE_BACKEND);
726
+ // Capture previous for update/delete
727
+ if (ctx.op === 'update' || ctx.op === 'delete') {
728
+ try {
729
+ ctx.previous = await ctx.backend.getOneRaw(ctx.entityName, ctx.id);
730
+ }
731
+ catch { /* ignore */ }
732
+ }
733
+ await next();
734
+ // Build history entry
735
+ const now = new Date();
736
+ const [moduleName, entityModuleName] = ctx.entityName.split('.');
737
+ const entityConfig = await entityRegistry.resolve(moduleName, entityModuleName);
738
+ const actions = [];
739
+ if (ctx.op === 'update' && ctx.previous && ctx.result) {
740
+ const changes = detectEntityChanges(ctx.previous, ctx.result);
741
+ // Build actions similar to old addToHistory mapping by widget type
742
+ if (entityConfig) {
743
+ for (const [key, value] of Object.entries(changes)) {
744
+ const property = entityConfig.properties.find((p) => p.name === key);
745
+ if (property && property.schema?.interface) {
746
+ const widgetType = property.schema.interface.type;
747
+ switch (widgetType) {
748
+ case 'file-uploader':
749
+ if (value.added?.length) {
750
+ actions.push({
751
+ type: AXPSystemActionType.Upload,
752
+ description: `"${value.added?.map((item) => item.name).join(', ')}"`,
753
+ });
754
+ }
755
+ if (value.removed?.length) {
756
+ actions.push({
757
+ type: AXPSystemActionType.Delete,
758
+ description: `"${value.removed?.map((item) => item.name).join(', ')}"`,
759
+ });
760
+ }
761
+ break;
762
+ case 'large-text-editor':
763
+ case 'rich-text-editor': {
764
+ const safeValue = extractTextFromHtml(value.newValue);
765
+ actions.push({
766
+ type: AXPSystemActionType.Update,
767
+ description: `${property.title} to "${safeValue.length > 100 ? safeValue.slice(0, 30) + '...' : safeValue}"`,
768
+ });
769
+ break;
770
+ }
771
+ case 'text-editor':
772
+ actions.push({
773
+ type: AXPSystemActionType.Update,
774
+ description: `${property.title} to "${value.newValue.length > 100 ? value.newValue.slice(0, 30) + '...' : value.newValue}"`,
775
+ });
776
+ break;
777
+ default:
778
+ actions.push({ type: AXPSystemActionType.Update, description: `${property.title}` });
779
+ }
780
+ }
781
+ }
782
+ }
783
+ // Expose raw changes to event middleware
784
+ ctx.locals.set('changes', changes);
785
+ }
786
+ // Compute reference ID and final data per operation
787
+ let referenceId;
788
+ let finalData = undefined;
789
+ if (ctx.op === 'create') {
790
+ const createdId = String(ctx.result);
791
+ const createdEntity = { ...ctx.data, id: createdId };
792
+ referenceId = createdId;
793
+ finalData = createdEntity;
794
+ }
795
+ else if (ctx.op === 'update') {
796
+ referenceId = String(ctx.id);
797
+ finalData = ctx.result;
798
+ }
799
+ else {
800
+ // delete
801
+ referenceId = String(ctx.id);
802
+ finalData = ctx.previous;
803
+ }
804
+ const record = {
805
+ id: AXPDataGenerator.uuid(),
806
+ title: entityConfig?.title ?? now.toISOString(),
807
+ date: now,
808
+ user: {
809
+ id: sessionService.user?.id ?? 'system',
810
+ name: sessionService.user?.name ?? 'System',
811
+ title: sessionService.user?.title ?? 'System',
812
+ },
813
+ reference: { id: referenceId, type: ctx.entityName },
814
+ changeType: ctx.op === 'create'
815
+ ? AXPSystemActionType.Create
816
+ : ctx.op === 'update'
817
+ ? AXPSystemActionType.Update
818
+ : AXPSystemActionType.Delete,
819
+ changes: actions,
820
+ data: finalData,
821
+ };
822
+ // Persist via backend raw insert to avoid recursive middleware
823
+ try {
824
+ await backend.insertOne(`${ctx.entityName}-history`, { ...record, isCurrent: true });
825
+ }
826
+ catch (error) {
827
+ console.error(error);
828
+ // swallow errors to avoid breaking main flow
829
+ }
830
+ },
831
+ };
832
+
833
+ const historyPlugin = {
834
+ name: 'history',
835
+ order: 50,
836
+ apply: (ctx) => {
837
+ ensureListActions(ctx);
838
+ ctx.interfaces.update((i) => {
839
+ const cmdName = 'show-version-history-popup';
840
+ //
841
+ const listActions = i.master.list.actions;
842
+ if (!actionExists(listActions, cmdName)) {
843
+ listActions.push({
844
+ title: '@activity-log:actions.view-history',
845
+ command: {
846
+ name: cmdName,
847
+ options: {
848
+ refId: '{{ context.eval("id") }}',
849
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
850
+ },
851
+ },
852
+ priority: 'secondary',
853
+ type: 'version-history',
854
+ scope: AXPEntityCommandScope.Individual,
855
+ });
856
+ }
857
+ //
858
+ const singleActions = i.master.single.actions;
859
+ if (!actionExists(singleActions, cmdName)) {
860
+ singleActions.push({
861
+ title: '@activity-log:actions.view-history',
862
+ command: {
863
+ name: cmdName,
864
+ options: {
865
+ refId: '{{ context.eval("id") }}',
866
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
867
+ },
868
+ },
869
+ priority: 'secondary',
870
+ type: 'version-history',
871
+ scope: AXPEntityCommandScope.Individual,
872
+ });
873
+ }
874
+ //
875
+ return i;
876
+ });
877
+ },
878
+ };
879
+
880
+ const comparePlugin = {
881
+ name: 'compare',
882
+ order: 50,
883
+ apply: (ctx) => {
884
+ ensureListActions(ctx);
885
+ ctx.interfaces.update((i) => {
886
+ const actions = i.master.list.actions;
887
+ const cmdName = 'show-entity-records-compare';
888
+ if (!actionExists(actions, cmdName)) {
889
+ actions.push({
890
+ title: '@activity-log:actions.compare-records',
891
+ command: { name: cmdName },
892
+ priority: 'secondary',
893
+ type: 'compare',
894
+ scope: AXPEntityCommandScope.Selected,
895
+ });
896
+ }
897
+ return i;
898
+ });
899
+ },
900
+ };
901
+
902
+ class AXPVersionHistoryModule {
903
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
904
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, imports: [i1$1.AXPWorkflowModule] }); }
905
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, providers: [
906
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: historyLoggerMiddleware },
907
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: historyPlugin },
908
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: comparePlugin },
909
+ ], imports: [AXPWorkflowModule.forChild({
910
+ actions: {
911
+ 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
912
+ },
913
+ workflows: {
914
+ 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
915
+ },
916
+ })] }); }
917
+ }
918
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, decorators: [{
919
+ type: NgModule,
920
+ args: [{
921
+ imports: [
922
+ AXPWorkflowModule.forChild({
923
+ actions: {
924
+ 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
925
+ },
926
+ workflows: {
927
+ 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
928
+ },
929
+ }),
930
+ ],
931
+ exports: [],
932
+ providers: [
933
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: historyLoggerMiddleware },
934
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: historyPlugin },
935
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: comparePlugin },
936
+ ],
937
+ }]
938
+ }] });
939
+
940
+ class AXPDateTimeEvaluatorScopeProvider {
941
+ constructor() {
942
+ this.calendarService = inject(AXCalendarService);
943
+ }
944
+ async provide(context) {
945
+ context.addScope('date', {
946
+ today: () => {
947
+ return this.calendarService.now();
948
+ },
949
+ tomorrow: () => {
950
+ return this.calendarService.create(this.calendarService.now()).add('day', 1).startOf('day').date;
951
+ },
952
+ yesterday: () => {
953
+ return this.calendarService.create(this.calendarService.now()).add('day', -1).startOf('day').date;
954
+ },
955
+ addDays: (date, days) => {
956
+ return this.calendarService.create(date).add('day', days).date;
957
+ },
958
+ });
959
+ }
960
+ }
961
+
962
+ class AXPTranslateEvaluatorScopeProvider {
963
+ constructor() {
964
+ this.translateService = inject(AXTranslationService);
965
+ }
966
+ async provide(context) {
967
+ context.addScope('translate', {
968
+ resolve: async (text, options) => {
969
+ return await this.translateService.translateAsync(text, options);
970
+ },
971
+ });
972
+ }
973
+ }
974
+
975
+ const lockGuardMiddleware = {
976
+ target: { ops: ['update', 'delete'], order: 10 },
977
+ execute: async (ctx, next) => {
978
+ const lockService = inject(AXPLockService);
979
+ const session = inject(AXPSessionService);
980
+ const lock = await lockService.check({ refId: ctx.id, refType: ctx.entityName });
981
+ if (lock) {
982
+ const info = await lockService.getInfo({ refId: ctx.id, refType: ctx.entityName });
983
+ if (info && session.user && info.lockedBy.id !== session.user.id) {
984
+ throw new Error('This record is locked and cannot be edited.');
985
+ }
986
+ }
987
+ await next();
988
+ },
989
+ };
990
+
709
991
  class AXMLockPopupWorkflowAction extends AXPWorkflowAction {
710
992
  constructor() {
711
993
  super(...arguments);
712
994
  this.popupService = inject(AXPopupService);
995
+ this.translationService = inject(AXTranslationService);
713
996
  }
714
997
  async execute(context) {
715
998
  const comp = (await Promise.resolve().then(function () { return index; })).AXPLockPopupComponent;
716
999
  const result = await this.popupService.open(comp, {
717
- title: 'lock-system.lock',
1000
+ title: await this.translationService.translateAsync('@lock-system:lock.dialog.title'),
718
1001
  data: {
719
1002
  refId: context.getVariable('options.refId'),
720
1003
  refType: context.getVariable('options.refType'),
@@ -778,7 +1061,7 @@ class AXMUnlockConfirmWorkflowAction extends AXPWorkflowAction {
778
1061
  const refId = context.getVariable('options.refId');
779
1062
  const refType = context.getVariable('options.refType');
780
1063
  // 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');
1064
+ 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
1065
  if (dialogResult.result) {
783
1066
  try {
784
1067
  // Perform unlock
@@ -793,7 +1076,7 @@ class AXMUnlockConfirmWorkflowAction extends AXPWorkflowAction {
793
1076
  catch (error) {
794
1077
  console.error('Unlock failed:', error);
795
1078
  // 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');
1079
+ await this.dialogService.alert(await this.translationService.translateAsync('@lock-system:unlock.error.title'), await this.translationService.translateAsync('@lock-system:unlock.error.description'), 'danger');
797
1080
  context.setOutput('isCanceled', true);
798
1081
  context.setOutput('unlocked', false);
799
1082
  }
@@ -838,253 +1121,635 @@ const AXMUnlockConfirmWorkflow = {
838
1121
  },
839
1122
  };
840
1123
 
841
- class AXPLockPopupComponent extends AXBasePageComponent {
1124
+ class AXMLockEvaluatorScopeProvider {
842
1125
  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
1126
  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
1127
  }
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' })
1128
+ async provide(context) {
1129
+ context.addScope('lock', {
1130
+ check: async (refId, refType) => {
1131
+ const lock = await this.lockService.check({
1132
+ refId, refType
1133
+ });
1134
+ return lock;
873
1135
  }
874
- ];
1136
+ });
875
1137
  }
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
- class AXMLockEvaluatorScopeProvider {
957
- constructor() {
958
- this.lockService = inject(AXPLockService);
959
- }
960
- async provide(context) {
961
- context.addScope('lock', {
962
- check: async (refId, refType) => {
963
- const lock = await this.lockService.check({
964
- refId, refType
965
- });
966
- return lock;
967
- }
968
- });
969
- }
970
- }
971
-
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
- },
990
- });
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
- },
1005
- };
1006
-
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({
1011
- actions: {
1012
- 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
1138
+ }
1139
+
1140
+ const lockPlugin = {
1141
+ name: 'lock',
1142
+ order: 50,
1143
+ apply: (ctx) => {
1144
+ ensureListActions(ctx);
1145
+ ctx.interfaces.update((i) => {
1146
+ const actions = i.master.list.actions;
1147
+ if (!actions.some((a) => a.name === 'lock-entity')) {
1148
+ actions.push({
1149
+ title: '@lock-system:lock.title',
1150
+ name: 'lock-entity',
1151
+ command: {
1152
+ name: 'lock-popup',
1153
+ options: {
1154
+ refId: '{{ context.eval("id") }}',
1155
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
1156
+ },
1157
+ },
1158
+ priority: 'secondary',
1159
+ type: 'lock',
1160
+ scope: AXPEntityCommandScope.Individual,
1161
+ hidden: `{{ lock.check(context.eval("id"), "${ctx.entity.module}.${ctx.entity.name}") }}`,
1162
+ });
1163
+ }
1164
+ if (!actions.some((a) => a.name === 'unlock-entity')) {
1165
+ actions.push({
1166
+ title: '@lock-system:unlock.title',
1167
+ name: 'unlock-entity',
1168
+ command: {
1169
+ name: 'unlock-confirm',
1170
+ options: {
1171
+ refId: '{{ context.eval("id") }}',
1172
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
1173
+ },
1174
+ },
1175
+ priority: 'secondary',
1176
+ type: 'unlock',
1177
+ scope: AXPEntityCommandScope.Individual,
1178
+ hidden: `{{ (await lock.check(context.eval("id"), "${ctx.entity.module}.${ctx.entity.name}")) == false }}`,
1179
+ });
1180
+ }
1181
+ return i;
1182
+ });
1183
+ },
1184
+ };
1185
+
1186
+ class AXMLockSystemModule {
1187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1188
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, imports: [i1$1.AXPWorkflowModule] }); }
1189
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, providers: [
1190
+ { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
1191
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
1192
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
1193
+ ], imports: [AXPWorkflowModule.forChild({
1194
+ actions: {
1195
+ AXMLockPopupWorkflowAction,
1196
+ AXMUnlockConfirmWorkflowAction,
1013
1197
  },
1014
1198
  workflows: {
1015
- 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
1199
+ 'lock-popup': AXMLockPopupWorkflow,
1200
+ 'unlock-confirm': AXMUnlockConfirmWorkflow,
1016
1201
  },
1017
1202
  })] }); }
1018
1203
  }
1019
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPVersionHistoryModule, decorators: [{
1204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMLockSystemModule, decorators: [{
1020
1205
  type: NgModule,
1021
1206
  args: [{
1022
1207
  imports: [
1023
1208
  AXPWorkflowModule.forChild({
1024
1209
  actions: {
1025
- 'show-version-history-popup-action': AXMVersionHistoryPopupStartAction,
1210
+ AXMLockPopupWorkflowAction,
1211
+ AXMUnlockConfirmWorkflowAction,
1026
1212
  },
1027
1213
  workflows: {
1028
- 'show-version-history-popup': AXMVersionHistoryPopupWorkflow,
1214
+ 'lock-popup': AXMLockPopupWorkflow,
1215
+ 'unlock-confirm': AXMUnlockConfirmWorkflow,
1029
1216
  },
1030
1217
  }),
1031
1218
  ],
1032
- exports: [],
1219
+ providers: [
1220
+ { provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, multi: true, useClass: AXMLockEvaluatorScopeProvider },
1221
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: lockPlugin },
1222
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: lockGuardMiddleware },
1223
+ ],
1033
1224
  }]
1034
1225
  }] });
1035
1226
 
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;
1227
+ /**
1228
+ * extra-properties plugin
1229
+ * Options:
1230
+ * - field: string (property name to hold the extra properties array, default: 'extraProperties')
1231
+ * - title?: string (UI title for the field)
1232
+ */
1233
+ const extraPropertiesPlugin = {
1234
+ name: 'extra-properties',
1235
+ order: 60,
1236
+ apply: async (ctx, options) => {
1237
+ const settingsService = inject(AXPSettingService);
1238
+ //#region ---- Options ----
1239
+ const field = options?.field?.trim()?.length ? options.field : 'extraProperties';
1240
+ const title = options?.title ?? '@extra-properties:title';
1241
+ const mode = options?.mode ?? 'defined';
1242
+ //#endregion
1243
+ //#region ---- Group ----
1244
+ // Ensure group exists
1245
+ const groupId = 'additional';
1246
+ const groups = ctx.groups.list() ?? [];
1247
+ if (!groups.some((g) => g.id === groupId)) {
1248
+ ctx.groups.add({ id: groupId, title: '@extra-properties:title' });
1249
+ }
1250
+ const target = `${ctx.entity.module}.${ctx.entity.name}`;
1251
+ const schema = mode === 'inline' ? [] :
1252
+ (await settingsService.scope(AXPPlatformScope.Tenant).get(`extra-properties.schema.${target}`)) ?? [];
1253
+ // Ensure property exists (uses our widget)
1254
+ const props = ctx.properties.list();
1255
+ if (!props.some((p) => p.name === field)) {
1256
+ ctx.properties.add({
1257
+ name: field,
1258
+ title,
1259
+ groupId,
1260
+ schema: {
1261
+ dataType: 'object',
1262
+ interface: {
1263
+ type: mode === 'inline' ? 'extra-properties' : 'extra-properties-values',
1264
+ options: {
1265
+ schema,
1266
+ },
1267
+ },
1268
+ },
1269
+ });
1270
+ }
1271
+ const shared = {
1272
+ name: 'extra-properties',
1273
+ command: {
1274
+ name: 'manage-extra-properties',
1275
+ options: {
1276
+ target,
1277
+ }
1053
1278
  },
1279
+ title: '@extra-properties:actions.manage',
1280
+ type: 'update',
1281
+ icon: 'fa-solid fa-gear',
1282
+ priority: 'secondary',
1283
+ permissions: ['@extra-properties:permissions.platform'],
1284
+ };
1285
+ ctx.interfaces.master.list.update((list) => {
1286
+ const next = list ?? { title: ctx.entity.title, views: [] };
1287
+ if (!next.actions) {
1288
+ next.actions = [];
1289
+ }
1290
+ next.actions.push({
1291
+ ...shared,
1292
+ scope: AXPEntityCommandScope.TypeLevel,
1293
+ });
1294
+ return next;
1054
1295
  });
1055
- }
1296
+ // Ensure single view includes it
1297
+ ctx.interfaces.master.single.update((single) => {
1298
+ const next = single ?? { title: ctx.entity.title, sections: [], properties: [] };
1299
+ next.sections = next.sections ?? [];
1300
+ if (!next.sections.some((s) => s.id === groupId) && schema.length > 0) {
1301
+ next.sections.push({ id: groupId });
1302
+ }
1303
+ next.properties = next.properties ?? [];
1304
+ if (!next.properties.some((p) => p.name === field)) {
1305
+ next.properties.push({
1306
+ name: field,
1307
+ layout: {
1308
+ positions: { lg: { colSpan: 12, order: 98 } },
1309
+ label: {
1310
+ visible: false
1311
+ }
1312
+ },
1313
+ });
1314
+ }
1315
+ // Ensure action exists
1316
+ if (mode === 'defined') {
1317
+ next.actions = next.actions ?? [];
1318
+ if (!next.actions.some((a) => a.name === 'extra-properties')) {
1319
+ next.actions.push({
1320
+ ...shared,
1321
+ scope: AXPEntityCommandScope.Individual,
1322
+ });
1323
+ }
1324
+ }
1325
+ return next;
1326
+ });
1327
+ // Ensure create view includes it
1328
+ ctx.interfaces.master.create.update((create) => {
1329
+ const next = create ?? { sections: [], properties: [] };
1330
+ next.sections = next.sections ?? [];
1331
+ if (!next.sections.some((s) => s.id === groupId)) {
1332
+ next.sections.push({ id: groupId });
1333
+ }
1334
+ next.properties = next.properties ?? [];
1335
+ if (!next.properties.some((p) => p.name === field)) {
1336
+ next.properties.push({
1337
+ name: field,
1338
+ layout: {
1339
+ positions: { lg: { colSpan: 12, order: 98 } },
1340
+ label: {
1341
+ visible: false
1342
+ }
1343
+ },
1344
+ });
1345
+ }
1346
+ return next;
1347
+ });
1348
+ // Ensure update view includes it
1349
+ ctx.interfaces.master.modify.update((modify) => {
1350
+ const next = modify ?? { sections: [], properties: [] };
1351
+ next.sections = next.sections ?? [];
1352
+ if (!next.sections.some((s) => s.id === groupId)) {
1353
+ next.sections.push({ id: groupId });
1354
+ }
1355
+ next.properties = next.properties ?? [];
1356
+ if (!next.properties.some((p) => p.name === field)) {
1357
+ next.properties.push({
1358
+ name: field,
1359
+ layout: {
1360
+ positions: { lg: { colSpan: 12, order: 98 } },
1361
+ label: {
1362
+ visible: false
1363
+ }
1364
+ },
1365
+ });
1366
+ }
1367
+ return next;
1368
+ });
1369
+ },
1370
+ };
1371
+
1372
+ const AXPWidgetsList = {
1373
+ Editors: {
1374
+ DocumentAttachment: 'document-attachment-editor',
1375
+ TagBox: 'tagable-editor',
1376
+ CheckBox: 'checkbox-editor',
1377
+ ColorBox: 'color-editor',
1378
+ DateTimeBox: 'date-time-editor',
1379
+ Direction: 'direction',
1380
+ LargeTextBox: 'large-text-editor',
1381
+ NumberBox: 'number-editor',
1382
+ UnitValueBox: 'number-unit-editor',
1383
+ PasswordBox: 'password-editor',
1384
+ QueryBuilder: 'query-builder-editor',
1385
+ RichText: 'rich-text-editor',
1386
+ SelectBox: 'select-editor',
1387
+ SelectionList: 'selection-list-editor',
1388
+ TextBox: 'text-editor',
1389
+ InlineDataTable: 'table-editor',
1390
+ ToggleSwitch: 'toggle-editor',
1391
+ FileTypeExtension: 'file-type-extension',
1392
+ MapBox: 'map',
1393
+ MediaGallery: 'gallery',
1394
+ SignatureBox: 'signature',
1395
+ LookupBox: 'lookup-editor',
1396
+ },
1397
+ Layouts: {
1398
+ BlockLayout: 'block-layout',
1399
+ RepeaterLayout: 'repeater-layout',
1400
+ TextBlockLayout: 'text-block-layout',
1401
+ FormField: 'form-field',
1402
+ },
1403
+ Actions: {
1404
+ ActionButton: 'button-action',
1405
+ },
1406
+ Advanced: {
1407
+ QRCode: 'qrcode',
1408
+ },
1409
+ Templates: {
1410
+ Designer: 'template-designer',
1411
+ },
1412
+ };
1413
+
1414
+ const AXP_EXTRA_PROPERTY_TYPES_DEFAULT = [
1415
+ { id: AXPWidgetsList.Editors.TextBox, title: 'Text' },
1416
+ { id: AXPWidgetsList.Editors.CheckBox, title: 'Checkbox' },
1417
+ { id: AXPWidgetsList.Editors.ToggleSwitch, title: 'Toggle' },
1418
+ { id: AXPWidgetsList.Editors.NumberBox, title: 'Number' },
1419
+ { id: AXPWidgetsList.Editors.DateTimeBox, title: 'Date', defaultOptions: { format: 'date' } },
1420
+ { id: AXPWidgetsList.Editors.DateTimeBox, title: 'DateTime', defaultOptions: { format: 'datetime' } },
1421
+ { id: AXPWidgetsList.Editors.DateTimeBox, title: 'Time', defaultOptions: { format: 'time' } },
1422
+ { id: AXPWidgetsList.Editors.TextBox, title: 'Email', defaultOptions: { type: 'email' } },
1423
+ { id: AXPWidgetsList.Editors.TextBox, title: 'Phone', defaultOptions: { type: 'tel' } },
1424
+ ];
1425
+ function provideExtraPropertyTypes(types) {
1426
+ return {
1427
+ provide: AXP_EXTRA_PROPERTY_TYPES,
1428
+ useValue: types,
1429
+ };
1430
+ }
1431
+ function provideDefaultExtraPropertyTypes() {
1432
+ return provideExtraPropertyTypes(AXP_EXTRA_PROPERTY_TYPES_DEFAULT);
1056
1433
  }
1057
1434
 
1058
- class AXPTranslateEvaluatorScopeProvider {
1435
+ class AXPExtraPropertiesModule {
1436
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPExtraPropertiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1437
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXPExtraPropertiesModule }); }
1438
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPExtraPropertiesModule, providers: [
1439
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: extraPropertiesPlugin },
1440
+ //
1441
+ provideDefaultExtraPropertyTypes(),
1442
+ //
1443
+ provideCommandSetups([{
1444
+ key: 'manage-extra-properties',
1445
+ command: () => import('./acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs').then(m => m.AXPManageExtraPropertiesCommand),
1446
+ }]),
1447
+ ] }); }
1448
+ }
1449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPExtraPropertiesModule, decorators: [{
1450
+ type: NgModule,
1451
+ args: [{
1452
+ providers: [
1453
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: extraPropertiesPlugin },
1454
+ //
1455
+ provideDefaultExtraPropertyTypes(),
1456
+ //
1457
+ provideCommandSetups([{
1458
+ key: 'manage-extra-properties',
1459
+ command: () => import('./acorex-modules-common-manage-extra-properties.command-DqdhTfLD.mjs').then(m => m.AXPManageExtraPropertiesCommand),
1460
+ }]),
1461
+ ],
1462
+ }]
1463
+ }] });
1464
+
1465
+ const categoryPlugin = {
1466
+ name: 'category',
1467
+ order: 45,
1468
+ apply: (ctx, options) => {
1469
+ const moduleName = ctx.entity.module;
1470
+ const baseEntityName = ctx.entity.name;
1471
+ const categoryEntityName = `${baseEntityName}Category`;
1472
+ const propertyName = options?.propertyName?.trim()?.length ? options.propertyName : 'categoryIds';
1473
+ const allowMultiple = options?.allowMultiple ?? true;
1474
+ // Ensure group exists (prefer basic-info)
1475
+ const groups = ctx.groups.list() ?? [];
1476
+ const hasBasic = groups.some((g) => g.id === 'basic-info');
1477
+ if (!hasBasic) {
1478
+ ctx.groups.add({ id: 'basic-info', title: '@general:terms.basic-info' });
1479
+ }
1480
+ ctx.columns.add({ name: 'categoryIds', options: { dataPath: 'categories' } });
1481
+ // Ensure property exists
1482
+ const props = ctx.properties.list();
1483
+ if (!props.some((p) => p.name === propertyName)) {
1484
+ ctx.properties.add({
1485
+ name: propertyName,
1486
+ title: '@general:terms.category.plural',
1487
+ groupId: 'basic-info',
1488
+ schema: {
1489
+ dataType: 'string',
1490
+ interface: {
1491
+ type: AXPWidgetsList.Editors.LookupBox,
1492
+ options: {
1493
+ entity: `${moduleName}.${categoryEntityName}`,
1494
+ multiple: allowMultiple,
1495
+ expose: [
1496
+ { source: 'id', target: 'categories.{id}' },
1497
+ { source: 'title', target: 'categories.{title}' },
1498
+ ],
1499
+ },
1500
+ },
1501
+ },
1502
+ });
1503
+ }
1504
+ // Ensure category sidebar/filter block
1505
+ ctx.category.update((cat) => {
1506
+ return {
1507
+ entity: `${moduleName}.${categoryEntityName}`,
1508
+ title: '@general:terms.category.plural',
1509
+ textField: 'title',
1510
+ valueField: 'id',
1511
+ applyConditions: [
1512
+ {
1513
+ name: propertyName,
1514
+ operator: { type: 'contains' },
1515
+ value: 'id',
1516
+ },
1517
+ ],
1518
+ };
1519
+ });
1520
+ // Ensure layout includes property in create/modify/single
1521
+ const ensureLayoutProperty = (layout) => {
1522
+ layout.sections = layout.sections ?? [];
1523
+ if (!layout.sections.some((s) => s.id === 'basic-info')) {
1524
+ layout.sections.push({ id: 'basic-info' });
1525
+ }
1526
+ layout.properties = layout.properties ?? [];
1527
+ if (!layout.properties.some((p) => p.name === propertyName)) {
1528
+ layout.properties.push({
1529
+ name: propertyName,
1530
+ layout: {
1531
+ positions: { lg: { colSpan: 12, order: 12 } },
1532
+ },
1533
+ });
1534
+ }
1535
+ return layout;
1536
+ };
1537
+ ctx.interfaces.master.create.update((create) => ensureLayoutProperty(create ?? { sections: [], properties: [] }));
1538
+ ctx.interfaces.master.modify.update((modify) => ensureLayoutProperty(modify ?? { sections: [], properties: [] }));
1539
+ ctx.interfaces.master.single.update((single) => ensureLayoutProperty(single ?? { title: ctx.entity.title, sections: [], properties: [] }));
1540
+ // Mark extension for dynamic category entity generation
1541
+ ctx.entity.extensions ??= {};
1542
+ ctx.entity.extensions.category = {
1543
+ entity: `${moduleName}.${categoryEntityName}`,
1544
+ propertyName,
1545
+ allowMultiple,
1546
+ };
1547
+ },
1548
+ };
1549
+
1550
+ class AXMEntityCategoryProvider {
1059
1551
  constructor() {
1060
- this.translateService = inject(AXTranslationService);
1552
+ this.injector = inject(Injector);
1061
1553
  }
1062
- async provide(context) {
1063
- context.addScope('translate', {
1064
- resolve: async (text, options) => {
1065
- return await this.translateService.translateAsync(text, options);
1066
- },
1067
- });
1554
+ preload() {
1555
+ return [];
1556
+ }
1557
+ async get(moduleName, entityName) {
1558
+ // Generic per-entity Category provider (works for any module)
1559
+ if (entityName.endsWith('Category')) {
1560
+ const fullKey = `${moduleName}.${entityName}`;
1561
+ const dataService = runInInjectionContext(this.injector, () => new AXMEntityCrudServiceImpl(fullKey));
1562
+ const entityDef = {
1563
+ module: moduleName,
1564
+ name: entityName,
1565
+ parentKey: 'parentId',
1566
+ plugins: [
1567
+ // { name: 'history' },
1568
+ // { name: 'lock' },
1569
+ // { name: 'compare' },
1570
+ ],
1571
+ source: '',
1572
+ title: '@general:terms.category.individual',
1573
+ formats: {
1574
+ individual: '@general:terms.category.individual',
1575
+ plural: '@general:terms.category.plural',
1576
+ searchResult: {
1577
+ title: '{{ title }}',
1578
+ description: '{{ module }}',
1579
+ },
1580
+ },
1581
+ relatedEntities: [],
1582
+ groups: [
1583
+ { id: 'basic-info', title: '@general:terms.basic-info' },
1584
+ ],
1585
+ properties: [
1586
+ {
1587
+ name: 'title',
1588
+ title: '@general:terms.title',
1589
+ groupId: 'basic-info',
1590
+ options: {
1591
+ sort: { enabled: true },
1592
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
1593
+ },
1594
+ schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },
1595
+ validations: [{ rule: 'required' }],
1596
+ },
1597
+ {
1598
+ name: 'parentId',
1599
+ title: '@general:terms.parent-id',
1600
+ groupId: 'basic-info',
1601
+ schema: {
1602
+ dataType: 'string',
1603
+ interface: {
1604
+ type: AXPWidgetsList.Editors.LookupBox,
1605
+ options: { entity: `${moduleName}.${entityName}` },
1606
+ },
1607
+ },
1608
+ },
1609
+ {
1610
+ name: 'description',
1611
+ title: '@general:terms.description',
1612
+ groupId: 'basic-info',
1613
+ schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.largeText } },
1614
+ },
1615
+ ],
1616
+ columns: [{ name: 'title' }, { name: 'description' }],
1617
+ commands: {
1618
+ create: { execute: async (data) => ({ id: await dataService.insertOne(data) }) },
1619
+ delete: { execute: async (id) => dataService.deleteOne(id) },
1620
+ update: { execute: async (data) => dataService.updateOne(data.id, data) },
1621
+ },
1622
+ queries: {
1623
+ byKey: { execute: async (id) => dataService.getOne(id), type: AXPEntityQueryType.Single },
1624
+ list: {
1625
+ execute: async (e) => {
1626
+ const res = await dataService.query(e);
1627
+ // enrich hasChild for tree views if childCount is available
1628
+ return {
1629
+ items: res.items.map((item) => ({ ...item, hasChild: (item.childCount ?? 0) > 0 })),
1630
+ total: res.total,
1631
+ };
1632
+ },
1633
+ type: AXPEntityQueryType.List,
1634
+ },
1635
+ },
1636
+ interfaces: {
1637
+ master: {
1638
+ create: {
1639
+ sections: [{ id: 'basic-info' }],
1640
+ properties: [
1641
+ { name: 'title', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },
1642
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
1643
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1644
+ ],
1645
+ },
1646
+ update: {
1647
+ sections: [{ id: 'basic-info' }],
1648
+ properties: [
1649
+ { name: 'title', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },
1650
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
1651
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1652
+ ],
1653
+ },
1654
+ single: {
1655
+ title: '{{title}}',
1656
+ sections: [{ id: 'basic-info', layout: { positions: { lg: { colSpan: 12 } } } }],
1657
+ properties: [
1658
+ { name: 'title', layout: { positions: { lg: { colSpan: 12, order: 1 } } } },
1659
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 2 } } } },
1660
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1661
+ ],
1662
+ actions: [entityMasterDeleteAction()],
1663
+ },
1664
+ list: {
1665
+ actions: [...entityMasterCrudActions()],
1666
+ views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
1667
+ },
1668
+ },
1669
+ },
1670
+ };
1671
+ return entityDef;
1672
+ }
1673
+ return null;
1068
1674
  }
1675
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1676
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityCategoryProvider }); }
1677
+ }
1678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMEntityCategoryProvider, decorators: [{
1679
+ type: Injectable
1680
+ }] });
1681
+
1682
+ class AXPCategoryModule {
1683
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPCategoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1684
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXPCategoryModule }); }
1685
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPCategoryModule, providers: [
1686
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: categoryPlugin },
1687
+ {
1688
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
1689
+ multi: true,
1690
+ useFactory: () => {
1691
+ const provider = {
1692
+ define: async (context) => {
1693
+ // Generate permissions for any entity that declared category extension
1694
+ // We can’t scan registry here reliably at bootstrap; rely on generic pattern per module via wildcard
1695
+ // Consumers can still override with module-level providers.
1696
+ // No-op here; permissions will be added when category entity is resolved via provideEntity elsewhere if needed.
1697
+ },
1698
+ };
1699
+ return provider;
1700
+ },
1701
+ },
1702
+ {
1703
+ provide: AXP_ENTITY_DEFINITION_LOADER,
1704
+ useClass: AXMEntityCategoryProvider,
1705
+ multi: true,
1706
+ },
1707
+ ] }); }
1069
1708
  }
1709
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPCategoryModule, decorators: [{
1710
+ type: NgModule,
1711
+ args: [{
1712
+ providers: [
1713
+ { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: categoryPlugin },
1714
+ {
1715
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
1716
+ multi: true,
1717
+ useFactory: () => {
1718
+ const provider = {
1719
+ define: async (context) => {
1720
+ // Generate permissions for any entity that declared category extension
1721
+ // We can’t scan registry here reliably at bootstrap; rely on generic pattern per module via wildcard
1722
+ // Consumers can still override with module-level providers.
1723
+ // No-op here; permissions will be added when category entity is resolved via provideEntity elsewhere if needed.
1724
+ },
1725
+ };
1726
+ return provider;
1727
+ },
1728
+ },
1729
+ {
1730
+ provide: AXP_ENTITY_DEFINITION_LOADER,
1731
+ useClass: AXMEntityCategoryProvider,
1732
+ multi: true,
1733
+ },
1734
+ ],
1735
+ }]
1736
+ }] });
1070
1737
 
1071
1738
  class AXMCommonModule {
1072
1739
  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,
1740
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, imports: [AXMLockSystemModule,
1741
+ AXPExtraPropertiesModule,
1742
+ AXPCategoryModule,
1743
+ AXPGlobalSearchModule,
1074
1744
  AXPWidgetsModule,
1075
1745
  AXPVersionHistoryModule,
1076
- AXPCompareModule, i1$1.AXPWorkflowModule] }); }
1746
+ AXPCompareModule] }); }
1077
1747
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, providers: [
1078
1748
  {
1079
1749
  provide: AXP_MENU_PROVIDER,
1080
1750
  useClass: AXMMenuProvider,
1081
1751
  multi: true,
1082
1752
  },
1083
- {
1084
- provide: AXP_ENTITY_DEFINITION_LOADER,
1085
- useClass: AXMEntityProvider,
1086
- multi: true,
1087
- },
1088
1753
  {
1089
1754
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1090
1755
  useClass: AXMSettingProvider,
@@ -1100,11 +1765,6 @@ class AXMCommonModule {
1100
1765
  useClass: AXMPermissionDefinitionProvider,
1101
1766
  multi: true,
1102
1767
  },
1103
- {
1104
- provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1105
- useClass: AXMLockEvaluatorScopeProvider,
1106
- multi: true,
1107
- },
1108
1768
  {
1109
1769
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1110
1770
  useClass: AXPDateTimeEvaluatorScopeProvider,
@@ -1115,39 +1775,25 @@ class AXMCommonModule {
1115
1775
  useClass: AXPTranslateEvaluatorScopeProvider,
1116
1776
  multi: true,
1117
1777
  },
1118
- ], imports: [AXPGlobalSearchModule,
1778
+ ], imports: [AXMLockSystemModule,
1779
+ AXPExtraPropertiesModule,
1780
+ AXPCategoryModule,
1781
+ AXPGlobalSearchModule,
1119
1782
  AXPWidgetsModule,
1120
1783
  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
- })] }); }
1784
+ AXPCompareModule] }); }
1132
1785
  }
1133
1786
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommonModule, decorators: [{
1134
1787
  type: NgModule,
1135
1788
  args: [{
1136
1789
  imports: [
1790
+ AXMLockSystemModule,
1791
+ AXPExtraPropertiesModule,
1792
+ AXPCategoryModule,
1137
1793
  AXPGlobalSearchModule,
1138
1794
  AXPWidgetsModule,
1139
1795
  AXPVersionHistoryModule,
1140
1796
  AXPCompareModule,
1141
- AXPWorkflowModule.forChild({
1142
- actions: {
1143
- AXMLockPopupWorkflowAction,
1144
- AXMUnlockConfirmWorkflowAction,
1145
- },
1146
- workflows: {
1147
- 'lock-popup': AXMLockPopupWorkflow,
1148
- 'unlock-confirm': AXMUnlockConfirmWorkflow,
1149
- },
1150
- }),
1151
1797
  ],
1152
1798
  exports: [],
1153
1799
  declarations: [],
@@ -1157,11 +1803,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1157
1803
  useClass: AXMMenuProvider,
1158
1804
  multi: true,
1159
1805
  },
1160
- {
1161
- provide: AXP_ENTITY_DEFINITION_LOADER,
1162
- useClass: AXMEntityProvider,
1163
- multi: true,
1164
- },
1165
1806
  {
1166
1807
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1167
1808
  useClass: AXMSettingProvider,
@@ -1177,11 +1818,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1177
1818
  useClass: AXMPermissionDefinitionProvider,
1178
1819
  multi: true,
1179
1820
  },
1180
- {
1181
- provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1182
- useClass: AXMLockEvaluatorScopeProvider,
1183
- multi: true,
1184
- },
1185
1821
  {
1186
1822
  provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,
1187
1823
  useClass: AXPDateTimeEvaluatorScopeProvider,
@@ -1196,51 +1832,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1196
1832
  }]
1197
1833
  }] });
1198
1834
 
1199
- const AXPWidgetsList = {
1200
- Editors: {
1201
- DocumentAttachment: 'document-attachment-editor',
1202
- TagBox: 'tagable-editor',
1203
- CheckBox: 'checkbox-editor',
1204
- ColorBox: 'color-editor',
1205
- DateTimeBox: 'date-time-editor',
1206
- Direction: 'direction',
1207
- LargeTextBox: 'large-text-editor',
1208
- NumberBox: 'number-editor',
1209
- UnitValueBox: 'number-unit-editor',
1210
- PasswordBox: 'password-editor',
1211
- QueryBuilder: 'query-builder-editor',
1212
- RichText: 'rich-text-editor',
1213
- SelectBox: 'select-editor',
1214
- SelectionList: 'selection-list-editor',
1215
- TextBox: 'text-editor',
1216
- InlineDataTable: 'table-editor',
1217
- ToggleSwitch: 'toggle-editor',
1218
- FileTypeExtension: 'file-type-extension',
1219
- MapBox: 'map',
1220
- MediaGallery: 'gallery',
1221
- SignatureBox: 'signature',
1222
- LookupBox: 'lookup-editor',
1223
- },
1224
- Layouts: {
1225
- BlockLayout: 'block-layout',
1226
- RepeaterLayout: 'repeater-layout',
1227
- TextBlockLayout: 'text-block-layout',
1228
- FormField: 'form-field',
1229
- },
1230
- Actions: {
1231
- ActionButton: 'button-action',
1232
- },
1233
- Advanced: {
1234
- QRCode: 'qrcode',
1235
- },
1236
- Templates: {
1237
- Designer: 'template-designer',
1238
- },
1239
- };
1835
+ class AXPLockPopupComponent extends AXBasePageComponent {
1836
+ constructor() {
1837
+ super(...arguments);
1838
+ //#endregion
1839
+ //#region ---- Signals & Services ----
1840
+ this.isBusy = signal(false, ...(ngDevMode ? [{ debugName: "isBusy" }] : []));
1841
+ this.form = viewChild.required('form');
1842
+ this.lockService = inject(AXPLockService);
1843
+ this.sessionService = inject(AXPSessionService);
1844
+ this.translationService = inject(AXTranslationService);
1845
+ //#endregion
1846
+ //#region ---- Form Data ----
1847
+ this.duration = '1h';
1848
+ this.reason = '';
1849
+ this.lockDurations = [];
1850
+ }
1851
+ async ngOnInit() {
1852
+ // Load translated duration options
1853
+ this.lockDurations = [
1854
+ {
1855
+ value: '1h',
1856
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.1h'),
1857
+ hours: 1
1858
+ },
1859
+ {
1860
+ value: '1d',
1861
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.1d'),
1862
+ hours: 24
1863
+ },
1864
+ {
1865
+ value: 'infinite',
1866
+ text: await this.translationService.translateAsync('@lock-system:lock.duration.options.infinite')
1867
+ }
1868
+ ];
1869
+ }
1870
+ //#endregion
1871
+ //#region ---- UI Handlers ----
1872
+ async handleConfirm() {
1873
+ if (this.isBusy()) {
1874
+ return;
1875
+ }
1876
+ // Validate form
1877
+ const validation = await this.form().validate();
1878
+ if (!validation.result) {
1879
+ return;
1880
+ }
1881
+ // Ensure duration is selected
1882
+ if (!this.duration) {
1883
+ return;
1884
+ }
1885
+ this.isBusy.set(true);
1886
+ try {
1887
+ const selectedDuration = this.lockDurations.find(d => d.value === this.duration);
1888
+ const expireAt = selectedDuration?.hours
1889
+ ? new Date(Date.now() + selectedDuration.hours * 60 * 60 * 1000)
1890
+ : undefined; // undefined means infinite
1891
+ await this.lockService.lock({
1892
+ refId: this.refId,
1893
+ refType: this.refType,
1894
+ type: 'user',
1895
+ date: new Date().toISOString(),
1896
+ expireAt: expireAt,
1897
+ lockedBy: {
1898
+ id: this.sessionService.user?.id ?? 'system',
1899
+ type: 'oidc.users',
1900
+ },
1901
+ });
1902
+ // Close and notify success
1903
+ this.close({
1904
+ isCanceled: false,
1905
+ duration: this.duration,
1906
+ reason: this.reason
1907
+ });
1908
+ }
1909
+ catch (error) {
1910
+ console.error(error);
1911
+ // TODO: show error toast if required
1912
+ }
1913
+ finally {
1914
+ this.isBusy.set(false);
1915
+ }
1916
+ }
1917
+ handleCancel() {
1918
+ this.close({ isCanceled: true });
1919
+ }
1920
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1921
+ 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:
1922
+ // Angular
1923
+ 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:
1924
+ // ACoreX
1925
+ 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: i1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1.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: i3.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
1926
+ }
1927
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPLockPopupComponent, decorators: [{
1928
+ type: Component,
1929
+ args: [{ selector: 'axp-lock-popup', standalone: true, imports: [
1930
+ // Angular
1931
+ CommonModule,
1932
+ FormsModule,
1933
+ // ACoreX
1934
+ AXButtonModule,
1935
+ AXDecoratorModule,
1936
+ AXFormModule,
1937
+ AXLabelModule,
1938
+ AXSelectBoxModule,
1939
+ AXTextAreaModule,
1940
+ AXTranslationModule,
1941
+ AXValidationModule,
1942
+ ], 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" }]
1943
+ }] });
1944
+
1945
+ var index = /*#__PURE__*/Object.freeze({
1946
+ __proto__: null,
1947
+ AXPLockPopupComponent: AXPLockPopupComponent
1948
+ });
1240
1949
 
1241
1950
  /**
1242
1951
  * Generated bundle index. Do not edit.
1243
1952
  */
1244
1953
 
1245
- export { AXMCommonModule, AXMEntityProvider, AXMLockPopupWorkflow, AXMLockPopupWorkflowAction, AXMMenuProvider, AXMSearchCommandProvider, AXMSettingProvider, AXMUnlockConfirmWorkflow, AXMUnlockConfirmWorkflowAction, AXPGlobalSearchModule, AXPGlobalSearchViewModel, AXPLockPopupComponent, AXPVersionHistoryModule, AXPWidgetsList, AXP_GLOBAL_SEARCH_CONFIG_TOKEN, RootConfig };
1954
+ export { AXMCommonModule, AXMLockPopupWorkflow, AXMLockPopupWorkflowAction, AXMMenuProvider, AXMSearchCommandProvider, AXMSettingProvider, AXMUnlockConfirmWorkflow, AXMUnlockConfirmWorkflowAction, AXPGlobalSearchModule, AXPGlobalSearchViewModel, AXPLockPopupComponent, AXPVersionHistoryModule, AXPWidgetsList, AXP_GLOBAL_SEARCH_CONFIG_TOKEN, RootConfig };
1246
1955
  //# sourceMappingURL=acorex-modules-common.mjs.map