@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,7 +1,7 @@
1
1
  import * as i2$4 from '@acorex/components/conversation';
2
2
  import { AXConversationModule, AXConversationInputComponent } from '@acorex/components/conversation';
3
3
  import { AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
4
- import { AXMEntityCrudServiceImpl, AXPEntityService, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
4
+ import { AXMEntityCrudServiceImpl, AXPEntityService, ensureListActions, actionExists, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
5
5
  import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
6
6
  import * as i1$2 from '@angular/common';
7
7
  import { AsyncPipe, CommonModule, DatePipe } from '@angular/common';
@@ -12,6 +12,7 @@ import { Router, ActivatedRoute, NavigationEnd, RouterModule, ROUTES } from '@an
12
12
  import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFilterOperatorMiddlewareService, AXP_MENU_PROVIDER } from '@acorex/platform/common';
13
13
  import * as i2$1 from '@acorex/platform/layout/builder';
14
14
  import { AXPWidgetsCatalog, AXPLayoutBuilderModule, AXPValueWidgetComponent, AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';
15
+ import { AXPUserAvatarComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutToolbarComponent, AXP_TASK_BADGE_PROVIDERS } from '@acorex/platform/layout/components';
15
16
  import * as i2$5 from '@acorex/platform/workflow';
16
17
  import { AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
17
18
  import { AXMUsersEntityService } from '@acorex/modules/security-management';
@@ -20,6 +21,9 @@ import * as i3 from '@acorex/components/avatar';
20
21
  import { AXAvatarModule } from '@acorex/components/avatar';
21
22
  import * as i2$2 from '@acorex/components/badge';
22
23
  import { AXBadgeModule } from '@acorex/components/badge';
24
+ import * as i4$2 from '@acorex/components/sliding-item';
25
+ import { AXSlidingItemModule } from '@acorex/components/sliding-item';
26
+ import { AXContextMenuComponent } from '@acorex/components/menu';
23
27
  import * as i5 from '@acorex/components/button';
24
28
  import { AXButtonModule } from '@acorex/components/button';
25
29
  import * as i4 from '@acorex/components/comment';
@@ -38,12 +42,12 @@ import { AXLabelModule } from '@acorex/components/label';
38
42
  import * as i6 from '@acorex/components/loading';
39
43
  import { AXLoadingModule } from '@acorex/components/loading';
40
44
  import { AXPopupService } from '@acorex/components/popup';
41
- import * as i5$1 from '@acorex/components/search-box';
45
+ import * as i6$1 from '@acorex/components/search-box';
42
46
  import { AXSearchBoxModule } from '@acorex/components/search-box';
43
47
  import { AXSelectBoxModule } from '@acorex/components/select-box';
44
48
  import * as i2 from '@acorex/components/skeleton';
45
49
  import { AXSkeletonModule } from '@acorex/components/skeleton';
46
- import * as i6$1 from '@acorex/components/tabs';
50
+ import * as i7$1 from '@acorex/components/tabs';
47
51
  import { AXTabsModule } from '@acorex/components/tabs';
48
52
  import { AXTextBoxModule } from '@acorex/components/text-box';
49
53
  import * as i9 from '@acorex/components/toolbar';
@@ -56,7 +60,6 @@ import * as i4$1 from '@acorex/core/translation';
56
60
  import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
57
61
  import { AXUnsubscriber } from '@acorex/core/utils';
58
62
  import { AXMNotificationConnectorService, AXP_NOTIFICATION_DEFINITION_PROVIDER } from '@acorex/modules/notification-management';
59
- import { AXPUserAvatarComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutToolbarComponent } from '@acorex/platform/layout/components';
60
63
  import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
61
64
  import { trigger, transition, style, animate } from '@angular/animations';
62
65
  import * as i10 from '@angular/forms';
@@ -227,7 +230,7 @@ async function messageFactory(injector) {
227
230
  },
228
231
  list: {
229
232
  execute: async (e) => {
230
- return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
233
+ return await dataService.query(e);
231
234
  },
232
235
  type: AXPEntityQueryType.List,
233
236
  },
@@ -505,7 +508,7 @@ async function roomFactory(injector) {
505
508
  },
506
509
  list: {
507
510
  execute: async (e) => {
508
- return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
511
+ return await dataService.query(e);
509
512
  },
510
513
  type: AXPEntityQueryType.List,
511
514
  },
@@ -803,7 +806,7 @@ async function tabFactory(injector) {
803
806
  },
804
807
  list: {
805
808
  execute: async (e) => {
806
- return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
809
+ return await dataService.query(e);
807
810
  },
808
811
  type: AXPEntityQueryType.List,
809
812
  },
@@ -929,6 +932,7 @@ class AXMMenuProvider {
929
932
  path: `${this.sessionService.application?.name}/${module.config.route}`,
930
933
  priority: 2,
931
934
  icon: RootConfig.entities.room.icon,
935
+ badgeKey: 'badge-chat',
932
936
  },
933
937
  ]);
934
938
  }
@@ -2199,7 +2203,7 @@ class AXMCommentComponent {
2199
2203
  }
2200
2204
  }
2201
2205
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2202
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMCommentComponent, isStandalone: true, selector: "axm-comment", inputs: { refrenceType: { classPropertyName: "refrenceType", publicName: "refrenceType", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: "refrenceId", publicName: "refrenceId", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "wysiwygEditor", first: true, predicate: ["w"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\">\n <ax-comment-container class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (!isLoading() && comments().length > 0) {\n <ax-comment-view class=\"ax-bg-lightest\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item\n [id]=\"comment.id!\"\n [replyCount]=\"comment.replyCount\"\n [class.highlighted]=\"highlightedCommentId() === comment.id\"\n [@fadeIn]\n >\n <axp-user-avatar #user [size]=\"48\" [userId]=\"comment.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n text=\"Edit\"\n color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"isLikedByUser(comment)\">\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"\n ></ax-comment-reply-text>\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item [id]=\"reply.id\" [class.highlighted]=\"highlightedCommentId() === reply.id\" [@fadeIn]>\n <axp-user-avatar\n #user2\n [size]=\"48\"\n [userId]=\"reply.author.id\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n text=\"Edit\"\n color=\"neutral\"\n (click)=\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(reply.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(reply)\" [liked]=\"isLikedByUser(reply)\">\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"\n ></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n } @else {\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if (isReplyingMode() || isEditingMode()) {\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-toolbar>\n <ax-content>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n </ax-content>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment()\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: [":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\n"], dependencies: [{ kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i1.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i1.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i1.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i1.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i1.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i1.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i1.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXConversationModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.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: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AxCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"], outputs: ["likedChange", "onLiked"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i5.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i7.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i8.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i8.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i8.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "component", type: i9.AXToolBarComponent, selector: "ax-toolbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i11.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId"] }, { kind: "pipe", type: i12.AXFormatPipe, name: "format" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
2206
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMCommentComponent, isStandalone: true, selector: "axm-comment", inputs: { refrenceType: { classPropertyName: "refrenceType", publicName: "refrenceType", isSignal: true, isRequired: true, transformFunction: null }, refrenceId: { classPropertyName: "refrenceId", publicName: "refrenceId", isSignal: true, isRequired: true, transformFunction: null }, subject: { classPropertyName: "subject", publicName: "subject", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "wysiwygEditor", first: true, predicate: ["w"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\">\n <ax-comment-container class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (!isLoading() && comments().length > 0) {\n <ax-comment-view class=\"ax-bg-lightest\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item [id]=\"comment.id!\" [replyCount]=\"comment.replyCount\"\n [class.highlighted]=\"highlightedCommentId() === comment.id\" [@fadeIn]>\n <axp-user-avatar #user [size]=\"48\" [userId]=\"comment.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"isLikedByUser(comment)\">\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"></ax-comment-reply-text>\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item [id]=\"reply.id\" [class.highlighted]=\"highlightedCommentId() === reply.id\" [@fadeIn]>\n <axp-user-avatar #user2 [size]=\"48\" [userId]=\"reply.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"neutral\"\n (click)=\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(reply.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(reply)\" [liked]=\"isLikedByUser(reply)\">\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n } @else {\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg class=\"ax-mx-auto\" xmlns=\"http://www.w3.org/2000/svg\" width=\"154\" height=\"161\" viewBox=\"0 0 154 161\"\n fill=\"none\">\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\" />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\" stroke=\"#E5E7EB\" />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\" />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\" />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\" stroke=\"#818CF8\" />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\" />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\" />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form [updateOn]=\"'submit'\">\n <ax-form-field>\n <div>\n @if (isReplyingMode() || isEditingMode()) {\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\">\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\">\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\n </span>\n </p>\n <div class=\"ax-truncate\" [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\n \"></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-toolbar>\n <ax-content>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n </ax-content>\n <ax-suffix>\n <ax-dropdown-button [disabled]=\"hasCooldown() || !this.commentContent()\" type=\"submit\" color=\"primary\"\n mode=\"split\" text=\"Send\" (onClick)=\"submitComment()\">\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n <!-- <ax-button-item-list>\n <ax-button-item (click)=\"submitComment()\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list> -->\n </ax-dropdown-button>\n </ax-suffix>\n </ax-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>", styles: [":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\n"], dependencies: [{ kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i1.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i1.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "component", type: i1.AXWysiwygAlignmentComponent, selector: "ax-wysiwyg-alignment" }, { kind: "component", type: i1.AXWysiwygColorsComponent, selector: "ax-wysiwyg-colors" }, { kind: "component", type: i1.AXWysiwygFontStyleComponent, selector: "ax-wysiwyg-font-style" }, { kind: "component", type: i1.AXWysiwygHistoryComponent, selector: "ax-wysiwyg-history" }, { kind: "component", type: i1.AXWysiwygListComponent, selector: "ax-wysiwyg-list" }, { kind: "ngmodule", type: AXConversationModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.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: AXCommentModule }, { kind: "component", type: i4.AXCommentViewComponent, selector: "ax-comment-view" }, { kind: "component", type: i4.AXCommentContainerComponent, selector: "ax-comment-container" }, { kind: "component", type: i4.AxCommentItemComponent, selector: "ax-comment-item", inputs: ["replyCount"] }, { kind: "component", type: i4.AXCommentLikeComponent, selector: "ax-comment-like", inputs: ["liked"], outputs: ["likedChange", "onLiked"] }, { kind: "component", type: i4.AXMenuOptionsComponent, selector: "ax-comment-menu-options" }, { kind: "component", type: i4.AXCommentReplyTextComponent, selector: "ax-comment-reply-text" }, { kind: "component", type: i4.AXCommentDateComponent, selector: "ax-comment-date" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i5.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i6.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i7.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i8.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i8.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i8.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "component", type: i9.AXToolBarComponent, selector: "ax-toolbar" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i11.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId"] }, { kind: "pipe", type: i12.AXFormatPipe, name: "format" }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
2203
2207
  trigger('fadeIn', [
2204
2208
  transition(':enter', [
2205
2209
  style({ opacity: 0, transform: 'translateY(10px)' }),
@@ -2235,7 +2239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2235
2239
  FormsModule,
2236
2240
  AXDropdownButtonModule,
2237
2241
  AXPUserAvatarComponent,
2238
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\">\n <ax-comment-container class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (!isLoading() && comments().length > 0) {\n <ax-comment-view class=\"ax-bg-lightest\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item\n [id]=\"comment.id!\"\n [replyCount]=\"comment.replyCount\"\n [class.highlighted]=\"highlightedCommentId() === comment.id\"\n [@fadeIn]\n >\n <axp-user-avatar #user [size]=\"48\" [userId]=\"comment.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n text=\"Edit\"\n color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"isLikedByUser(comment)\">\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"\n ></ax-comment-reply-text>\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item [id]=\"reply.id\" [class.highlighted]=\"highlightedCommentId() === reply.id\" [@fadeIn]>\n <axp-user-avatar\n #user2\n [size]=\"48\"\n [userId]=\"reply.author.id\"\n ngProjectAs=\"'ax-avatar'\"\n ></axp-user-avatar>\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n text=\"Edit\"\n color=\"neutral\"\n (click)=\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(reply.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(reply)\" [liked]=\"isLikedByUser(reply)\">\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"\n ></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n } @else {\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg\n class=\"ax-mx-auto\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"154\"\n height=\"161\"\n viewBox=\"0 0 154 161\"\n fill=\"none\"\n >\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\"\n />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\"\n stroke=\"#E5E7EB\"\n />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\"\n />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\"\n stroke=\"#818CF8\"\n />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\"\n />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\"\n />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form>\n <ax-form-field>\n <div>\n @if (isReplyingMode() || isEditingMode()) {\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\"\n >\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i\n [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"\n ></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\"\n >\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\n </span>\n </p>\n <div\n class=\"ax-truncate\"\n [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\n \"\n ></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-toolbar>\n <ax-content>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n </ax-content>\n <ax-suffix>\n <ax-dropdown-button\n [disabled]=\"hasCooldown()\"\n type=\"submit\"\n color=\"primary\"\n mode=\"split\"\n text=\"Send\"\n (onClick)=\"submitComment()\"\n >\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n <ax-button-item-list>\n <ax-button-item (click)=\"submitComment()\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>\n", styles: [":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\n"] }]
2242
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-flex ax-flex-col ax-justify-between ax-p-4 ax-overflow-hidden\">\n <ax-comment-container class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-py-12 ax-bg-lightest ax-px-5\">\n <ax-skeleton class=\"ax-min-w-16 ax-h-16 ax-rounded-full ax-me-4\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n <ax-skeleton class=\"ax-w-full ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-full ax-h-2 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8/12 ax-h-2 ax-rounded-full\"></ax-skeleton>\n </div>\n </div>\n } @else if (!isLoading() && comments().length > 0) {\n <ax-comment-view class=\"ax-bg-lightest\">\n @for (comment of comments(); track comment.id) {\n <ax-comment-item [id]=\"comment.id!\" [replyCount]=\"comment.replyCount\"\n [class.highlighted]=\"highlightedCommentId() === comment.id\" [@fadeIn]>\n <axp-user-avatar #user [size]=\"48\" [userId]=\"comment.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user.firstName() + ' ' + user.lastName() }}</ax-title>\n <ax-comment-date>{{ comment.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"neutral\"\n (click)=\"editMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(comment.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(comment.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(comment)\" [liked]=\"isLikedByUser(comment)\">\n {{ getReactionsCount(comment) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, undefined, user.firstName() + ' ' + user.lastName())\"></ax-comment-reply-text>\n @for (reply of comment.replies; track reply.id) {\n <ax-comment-item [id]=\"reply.id\" [class.highlighted]=\"highlightedCommentId() === reply.id\" [@fadeIn]>\n <axp-user-avatar #user2 [size]=\"48\" [userId]=\"reply.author.id\" ngProjectAs=\"'ax-avatar'\"></axp-user-avatar>\n <ax-title>{{ user2.firstName() + ' ' + user2.lastName() }}</ax-title>\n <ax-comment-date>{{ reply.createdAt | format: 'timeleft' | async }} </ax-comment-date>\n <ax-comment-menu-options>\n <ax-button class=\"ax-sm\" look=\"blank\" color=\"neutral\">\n <ax-icon icon=\"ax-icon ax-icon-solid ax-icon-more-horizontal\"></ax-icon>\n </ax-button>\n\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Edit\" color=\"neutral\"\n (click)=\"editMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-edit\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item text=\"Delete\" color=\"danger\" (click)=\"deleteComment(reply.id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-comment-menu-options>\n <ax-content [innerHTML]=\"sanitizeHtml(reply.message.content)\"></ax-content>\n <ax-comment-like (click)=\"toggleLike(reply)\" [liked]=\"isLikedByUser(reply)\">\n {{ getReactionsCount(reply) }}\n </ax-comment-like>\n <ax-comment-reply-text\n (click)=\"replyMessage(comment, reply, user2.firstName() + ' ' + user2.lastName())\"></ax-comment-reply-text>\n </ax-comment-item>\n }\n </ax-comment-item>\n }\n </ax-comment-view>\n } @else {\n <div>\n <div class=\"ax-flex ax-flex-col ax-gap-4 ax-justify-center ax-items-center ax-p-10\">\n <svg class=\"ax-mx-auto\" xmlns=\"http://www.w3.org/2000/svg\" width=\"154\" height=\"161\" viewBox=\"0 0 154 161\"\n fill=\"none\">\n <path\n d=\"M0.0616455 84.4268C0.0616455 42.0213 34.435 7.83765 76.6507 7.83765C118.803 7.83765 153.224 42.0055 153.224 84.4268C153.224 102.42 147.026 118.974 136.622 132.034C122.282 150.138 100.367 161 76.6507 161C52.7759 161 30.9882 150.059 16.6633 132.034C6.25961 118.974 0.0616455 102.42 0.0616455 84.4268Z\"\n fill=\"#EEF2FF\" />\n <path\n d=\"M96.8189 0.632498L96.8189 0.632384L96.8083 0.630954C96.2034 0.549581 95.5931 0.5 94.9787 0.5H29.338C22.7112 0.5 17.3394 5.84455 17.3394 12.4473V142.715C17.3394 149.318 22.7112 154.662 29.338 154.662H123.948C130.591 154.662 135.946 149.317 135.946 142.715V38.9309C135.946 38.0244 135.847 37.1334 135.648 36.2586L135.648 36.2584C135.117 33.9309 133.874 31.7686 132.066 30.1333C132.066 30.1331 132.065 30.1329 132.065 30.1327L103.068 3.65203C103.068 3.6519 103.067 3.65177 103.067 3.65164C101.311 2.03526 99.1396 0.995552 96.8189 0.632498Z\"\n fill=\"white\" stroke=\"#E5E7EB\" />\n <ellipse cx=\"80.0618\" cy=\"81\" rx=\"28.0342\" ry=\"28.0342\" fill=\"#EEF2FF\" />\n <path\n d=\"M99.2393 61.3061L99.2391 61.3058C88.498 50.5808 71.1092 50.5804 60.3835 61.3061C49.6423 72.0316 49.6422 89.4361 60.3832 100.162C71.109 110.903 88.4982 110.903 99.2393 100.162C109.965 89.4363 109.965 72.0317 99.2393 61.3061ZM105.863 54.6832C120.249 69.0695 120.249 92.3985 105.863 106.785C91.4605 121.171 68.1468 121.171 53.7446 106.785C39.3582 92.3987 39.3582 69.0693 53.7446 54.683C68.1468 40.2965 91.4605 40.2966 105.863 54.6832Z\"\n stroke=\"#E5E7EB\" />\n <path\n d=\"M110.782 119.267L102.016 110.492C104.888 108.267 107.476 105.651 109.564 102.955L118.329 111.729L110.782 119.267Z\"\n stroke=\"#E5E7EB\" />\n <path\n d=\"M139.122 125.781L139.122 125.78L123.313 109.988C123.313 109.987 123.313 109.987 123.312 109.986C121.996 108.653 119.849 108.657 118.521 109.985L118.871 110.335L118.521 109.985L109.047 119.459C107.731 120.775 107.735 122.918 109.044 124.247L109.047 124.249L124.858 140.06C128.789 143.992 135.191 143.992 139.122 140.06C143.069 136.113 143.069 129.728 139.122 125.781Z\"\n fill=\"#A5B4FC\" stroke=\"#818CF8\" />\n <path\n d=\"M83.185 87.2285C82.5387 87.2285 82.0027 86.6926 82.0027 86.0305C82.0027 83.3821 77.9987 83.3821 77.9987 86.0305C77.9987 86.6926 77.4627 87.2285 76.8006 87.2285C76.1543 87.2285 75.6183 86.6926 75.6183 86.0305C75.6183 80.2294 84.3831 80.2451 84.3831 86.0305C84.3831 86.6926 83.8471 87.2285 83.185 87.2285Z\"\n fill=\"#4F46E5\" />\n <path\n d=\"M93.3528 77.0926H88.403C87.7409 77.0926 87.2049 76.5567 87.2049 75.8946C87.2049 75.2483 87.7409 74.7123 88.403 74.7123H93.3528C94.0149 74.7123 94.5509 75.2483 94.5509 75.8946C94.5509 76.5567 94.0149 77.0926 93.3528 77.0926Z\"\n fill=\"#4F46E5\" />\n <path\n d=\"M71.5987 77.0925H66.6488C65.9867 77.0925 65.4507 76.5565 65.4507 75.8945C65.4507 75.2481 65.9867 74.7122 66.6488 74.7122H71.5987C72.245 74.7122 72.781 75.2481 72.781 75.8945C72.781 76.5565 72.245 77.0925 71.5987 77.0925Z\"\n fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"21.5128\" width=\"41.0256\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <rect x=\"38.3522\" y=\"133.65\" width=\"54.7009\" height=\"5.47009\" rx=\"2.73504\" fill=\"#A5B4FC\" />\n <rect x=\"38.3522\" y=\"29.7179\" width=\"13.6752\" height=\"2.73504\" rx=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"56.13\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"61.6001\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n <circle cx=\"67.0702\" cy=\"31.0854\" r=\"1.36752\" fill=\"#4F46E5\" />\n </svg>\n <div>\n <h2 class=\"ax-text-center ax-text-neutral-600 ax-font-semibold ax-leading-loose ax-pb-2\">\n There is no Comment!\n </h2>\n </div>\n </div>\n </div>\n }\n </ax-comment-container>\n <ax-form [updateOn]=\"'submit'\">\n <ax-form-field>\n <div>\n @if (isReplyingMode() || isEditingMode()) {\n <div\n class=\"ax-flex ax-justify-between ax-rounded-b-none ax-border ax-border-b-0 ax-rounded-lg ax-px-6 ax-py-3 ax-w-full ax-items-center ax-overflow-hidden ax-text-sm ax-leading-none\">\n <div (click)=\"scrollMain()\" class=\"ax-flex ax-justify-start ax-items-center ax-cursor-pointer\">\n <i [class]=\"isReplyingMode() ? 'fa-reply' : 'fa-pen'\"\n class=\"fa-solid ax-text-primary-500 dark:ax-text-primary-300 ax-text-2xl ax-me-4\"></i>\n <div\n class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-between ax-align-middle ax-leading-4 ax-overflow-hidden\">\n <p class=\"ax-text-primary-500 dark:ax-text-primary-300\">\n {{ isReplyingMode() ? 'Reply to ' : 'Edit Message' }}\n <span class=\"ax-font-bold\">\n {{ isReplyingMode() ? activeReplyComment()?.userName : '' }}\n </span>\n </p>\n <div class=\"ax-truncate\" [innerHTML]=\"\n isReplyingMode()\n ? sanitizeHtml(activeReplyComment()?.message?.content ?? '')\n : sanitizeHtml(activeEditComment()?.message?.content ?? '')\n \"></div>\n </div>\n </div>\n <div><i (click)=\"resetReplyEditState()\" class=\"fa-solid ax-text-2xl fa-xmark ax-cursor-pointer\"></i></div>\n </div>\n }\n <ax-wysiwyg-container #w [look]=\"wysiwygOptions().look\" [(ngModel)]=\"commentContent\">\n <ax-wysiwyg-view class=\"ax-min-h-28\"></ax-wysiwyg-view>\n <ax-toolbar>\n <ax-content>\n <ax-wysiwyg-history></ax-wysiwyg-history>\n <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n <ax-wysiwyg-colors></ax-wysiwyg-colors>\n <ax-wysiwyg-list></ax-wysiwyg-list>\n <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n </ax-content>\n <ax-suffix>\n <ax-dropdown-button [disabled]=\"hasCooldown() || !this.commentContent()\" type=\"submit\" color=\"primary\"\n mode=\"split\" text=\"Send\" (onClick)=\"submitComment()\">\n @if (isSubmitting()) {\n <ax-loading></ax-loading>\n }\n <!-- <ax-button-item-list>\n <ax-button-item (click)=\"submitComment()\" text=\"Send Private ...\" name=\"private\" data=\"private\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-user-secret\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list> -->\n </ax-dropdown-button>\n </ax-suffix>\n </ax-toolbar>\n <ax-validation-rule rule=\"callback\" [options]=\"{ validate: validateContent }\"></ax-validation-rule>\n </ax-wysiwyg-container>\n </div>\n </ax-form-field>\n </ax-form>\n</div>", styles: [":host{display:block;width:100%;height:100%}ax-wysiwyg-container .ax-editor-container{border-top-left-radius:0!important;border-top-right-radius:0!important}ax-wysiwyg-container .ax-error-message{padding-left:.5rem}ax-wysiwyg-container .highlighted{background:var(--ax-color-primary-050)!important;border-radius:.25rem;transition:background 1s ease-in-out}\n"] }]
2239
2243
  }] });
2240
2244
 
2241
2245
  var comment_component = /*#__PURE__*/Object.freeze({
@@ -2408,13 +2412,16 @@ const AXPCommentWidget = {
2408
2412
  description: 'Display and manage comments for entities',
2409
2413
  type: 'view',
2410
2414
  categories: [],
2411
- groups: [AXPWidgetGroupEnum.FormElement],
2415
+ groups: [AXPWidgetGroupEnum.EntityWidget],
2412
2416
  icon: 'fa-solid fa-comments',
2413
2417
  properties: [],
2414
2418
  components: {
2415
2419
  view: {
2416
2420
  component: () => Promise.resolve().then(function () { return commentWidgetView_component; }).then((c) => c.AXMCommentWidgetViewComponent),
2417
2421
  },
2422
+ edit: {
2423
+ component: () => Promise.resolve().then(function () { return commentWidgetView_component; }).then((c) => c.AXMCommentWidgetViewComponent),
2424
+ },
2418
2425
  },
2419
2426
  };
2420
2427
 
@@ -2590,6 +2597,7 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
2590
2597
  // View Children
2591
2598
  this.tab = viewChild('tab', ...(ngDevMode ? [{ debugName: "tab" }] : []));
2592
2599
  this.container = viewChild('container', ...(ngDevMode ? [{ debugName: "container" }] : []));
2600
+ this.chatContext = viewChild('chatContext', ...(ngDevMode ? [{ debugName: "chatContext" }] : []));
2593
2601
  // State signals
2594
2602
  this.rooms = signal([], ...(ngDevMode ? [{ debugName: "rooms" }] : []));
2595
2603
  this.allRooms = signal([], ...(ngDevMode ? [{ debugName: "allRooms" }] : []));
@@ -2667,6 +2675,8 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
2667
2675
  this.allCount = computed(() => this.allRooms().length, ...(ngDevMode ? [{ debugName: "allCount" }] : []));
2668
2676
  this.hasUnread = computed(() => this.allRooms().filter((i) => i.unreadCount > 0).length > 0, ...(ngDevMode ? [{ debugName: "hasUnread" }] : []));
2669
2677
  this.totalCount = computed(() => this.allRooms().length || 0, ...(ngDevMode ? [{ debugName: "totalCount" }] : []));
2678
+ // Context menu handlers (desktop)
2679
+ this.contextRoom = null;
2670
2680
  }
2671
2681
  async deleteTab(tab) {
2672
2682
  const result = await this.dialogService.confirm('Delete Tab', `Are you sure you want to delete the "${tab.title}" tab?`);
@@ -2831,18 +2841,18 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
2831
2841
  return null;
2832
2842
  }
2833
2843
  async getSecondaryMenuItems() {
2834
- return this.layoutService.isMobileDevice()
2835
- ? []
2836
- : [
2837
- {
2838
- title: await this.translateService.translateAsync('remove-chat', { scope: 'conversation' }),
2839
- icon: 'fa-light fa-trash-can',
2840
- color: 'danger',
2841
- command: {
2842
- name: 'remove-chat',
2843
- },
2844
+ const items = [];
2845
+ if (this.layoutService.isMobileDevice() && this.selectedRoom()) {
2846
+ items.push({
2847
+ title: await this.translateService.translateAsync('remove-chat', { scope: 'conversation' }),
2848
+ icon: 'fa-light fa-trash-can',
2849
+ color: 'danger',
2850
+ command: {
2851
+ name: 'remove-chat',
2844
2852
  },
2845
- ];
2853
+ });
2854
+ }
2855
+ return items;
2846
2856
  }
2847
2857
  async execute(command) {
2848
2858
  switch (command.name) {
@@ -2993,6 +3003,55 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
2993
3003
  this.toastService.danger('Failed to create room');
2994
3004
  }
2995
3005
  }
3006
+ // Sliding item actions (mobile)
3007
+ onSlideAction(room, action) {
3008
+ switch (action) {
3009
+ // case 'mute':
3010
+ // this.toastService.warning('Mute not implemented yet');
3011
+ // break;
3012
+ case 'delete':
3013
+ this.deleteRoom(room.id);
3014
+ break;
3015
+ }
3016
+ }
3017
+ async deleteRoom(roomId) {
3018
+ try {
3019
+ const dialogResult = await this.dialogService.confirm('Delete Room', 'Are you sure you want to delete Room?', 'danger', 'horizontal');
3020
+ if (dialogResult.result) {
3021
+ this.chatService.deleteRoom(roomId);
3022
+ }
3023
+ }
3024
+ catch (error) {
3025
+ console.error(`Error Deleting Room with Room id: ${roomId}`, error);
3026
+ }
3027
+ }
3028
+ openContextMenu(ev, room) {
3029
+ ev.preventDefault();
3030
+ this.contextRoom = room;
3031
+ this.chatContext()?.showAt({ x: ev.clientX, y: ev.clientY });
3032
+ }
3033
+ onContextOpening(e) {
3034
+ e.items = [
3035
+ { name: 'open', text: 'Open', icon: 'fa-light fa-message-lines' },
3036
+ // { name: 'mute', text: 'Mute', icon: 'fa-light fa-bell-slash' },
3037
+ { name: 'delete', text: 'Delete', icon: 'fa-light fa-trash-can', color: 'danger' },
3038
+ ];
3039
+ }
3040
+ onContextItemClick(e) {
3041
+ if (!this.contextRoom)
3042
+ return;
3043
+ switch (e.item.name) {
3044
+ case 'open':
3045
+ this.openChat(this.contextRoom.id);
3046
+ break;
3047
+ // case 'mute':
3048
+ // this.toastService.warning('Mute not implemented yet');
3049
+ // break;
3050
+ case 'delete':
3051
+ this.deleteRoom(this.contextRoom.id);
3052
+ break;
3053
+ }
3054
+ }
2996
3055
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2997
3056
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXMChatComponent, isStandalone: true, selector: "axm-chat", host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, providers: [
2998
3057
  {
@@ -3000,14 +3059,14 @@ class AXMChatComponent extends AXPPageLayoutBaseComponent {
3000
3059
  useExisting: AXMChatComponent,
3001
3060
  },
3002
3061
  AXUnsubscriber,
3003
- ], viewQueries: [{ propertyName: "tab", first: true, predicate: ["tab"], descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout #container>\n <axp-layout-start-side class=\"ax-border-e ax-lightest-surface ax-h-full\">\n <axp-layout-header>\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box\n #searchInput\n look=\"solid\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\">\n @if (!layoutService.isMobileDevice()) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content style=\"height: calc(100vh - 22rem)\">\n @if (selectedRoom()) {\n <router-outlet></router-outlet>\n } @else if (layoutService.isMobileDevice()) {\n <ax-search-box\n #searchInput\n look=\"solid\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-full ax-mb-2\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n<ng-template #template>\n <!-- Tabs -->\n <div [class]=\"!layoutService.isMobileDevice() ? 'ax-px-4' : ''\">\n <ax-tabs\n #tab\n class=\"ax-text-neutral-400 !ax-overflow-x-hidden\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"true\"\n (onActiveTabChanged)=\"activeTabIndex.set($event.index)\"\n >\n @for (tab of tabs(); track tab.id; let i = $index) {\n <ax-tab-item [text]=\"tab.title\" [active]=\"activeTabIndex() === i\">\n <ax-suffix>\n <ax-badge\n [text]=\"getRoomCountForTab(tab).toString()\"\n [color]=\"activeTabIndex() === i ? 'primary' : 'secondary'\"\n class=\"ax-min-w-[1.5rem] ax-justify-center\"\n ></ax-badge>\n </ax-suffix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n\n <!-- Chat List Content -->\n <div\n class=\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\"\n [class.ax-border-t]=\"tabs().length > 0\"\n >\n <!-- Loading State -->\n @if (isLoading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (error()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\">\n <ax-icon class=\"ax-text-danger ax-text-5xl ax-mb-3\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-text-secondary ax-mb-4\">{{ error() }}</p>\n <ax-button\n [text]=\"'try-again' | translate: { scope: 'conversation' } | async\"\n color=\"primary\"\n (onClick)=\"refreshChat()\"\n ></ax-button>\n </div>\n } @else {\n <div class=\"ax-flex-1 ax-overflow-y-auto\">\n @for (i of filteredRooms(); track i.id) {\n <axm-chat-item\n [data]=\"i\"\n [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\"\n [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\"\n [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface\"\n [@fadeIn]\n tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\"\n role=\"button\"\n ></axm-chat-item>\n } @empty {\n <div class=\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\">\n @if (isSearching()) {\n No chats found matching your search.\n } @else {\n There are no conversations in this tab.\n }\n </div>\n }\n </div>\n }\n\n <!-- Footer Content -->\n @if (!layoutService.isMobileDevice()) {\n <div class=\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\">\n <ax-button class=\"ax-w-full\" color=\"primary\" text=\"New Conversation\" (onClick)=\"onNewConversation()\">\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n <ax-button\n class=\"ax-fixed ax-bottom-16 ax-right-8 !ax-rounded-full !ax-w-14 !ax-h-14 ax-shadow-lg\"\n color=\"primary\"\n (onClick)=\"onNewConversation()\"\n >\n <ax-icon class=\"ax-text-2xl\">\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "component", type: AXMChatItemComponent, selector: "axm-chat-item", inputs: ["data", "typing", "lastMessageReaction"], outputs: ["pressChatItem"] }, { kind: "ngmodule", type:
3062
+ ], viewQueries: [{ propertyName: "tab", first: true, predicate: ["tab"], descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "chatContext", first: true, predicate: ["chatContext"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout #container>\n <axp-layout-start-side class=\"ax-border-e ax-lightest-surface ax-h-full\">\n <axp-layout-header>\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box #searchInput look=\"solid\" [placeholder]=\"placeholder()\" [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\" class=\"ax-w-full\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\">\n @if (!layoutService.isMobileDevice()) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content style=\"height: calc(100vh - 22rem)\">\n @if (selectedRoom()) {\n <router-outlet></router-outlet>\n } @else if (layoutService.isMobileDevice()) {\n <ax-search-box #searchInput look=\"solid\" [placeholder]=\"placeholder()\" [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\" class=\"ax-w-full ax-mb-2\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n<ng-template #template>\n <!-- Tabs -->\n <div [class]=\"!layoutService.isMobileDevice() ? 'ax-px-4' : ''\">\n <ax-tabs #tab class=\"ax-text-neutral-400 !ax-overflow-x-hidden\" [look]=\"'with-line'\" [location]=\"'bottom'\"\n [fitParent]=\"true\" (onActiveTabChanged)=\"activeTabIndex.set($event.index)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <ax-tab-item [text]=\"tab.title\" [active]=\"activeTabIndex() === i\">\n @if (getRoomCountForTab(tab) > 0) {\n <ax-suffix>\n <ax-badge [text]=\"getRoomCountForTab(tab).toString()\"\n [color]=\"activeTabIndex() === i ? 'primary' : 'secondary'\"\n class=\"ax-min-w-[1.5rem] ax-justify-center\"></ax-badge>\n </ax-suffix>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n\n <!-- Chat List Content -->\n <div class=\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\"\n [class.ax-border-t]=\"tabs().length > 0\">\n <!-- Loading State -->\n @if (isLoading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (error()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\">\n <ax-icon class=\"ax-text-danger ax-text-5xl ax-mb-3\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-text-secondary ax-mb-4\">{{ error() }}</p>\n <ax-button [text]=\"'try-again' | translate: { scope: 'conversation' } | async\" color=\"primary\"\n (onClick)=\"refreshChat()\"></ax-button>\n </div>\n } @else {\n <div class=\"ax-flex-1 ax-overflow-y-auto ax-pt-1\">\n @for (i of filteredRooms(); track i.id) {\n @if (layoutService.isMobileDevice()) {\n <ax-sliding-item class=\"ax-h-20\">\n <ax-content class=\"!ax-p-0\">\n <axm-chat-item [data]=\"i\" [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\" [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\" [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface ax-block\" [@fadeIn] tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\" role=\"button\" (contextmenu)=\"openContextMenu($event, i)\"></axm-chat-item>\n </ax-content>\n\n <!-- <ax-sliding-item-suffix (onClick)=\"onSlideAction(i, 'mute')\" color=\"warning\">\n <ax-icon class=\"fa-light fa-bell-slash fa-lg\"></ax-icon>\n </ax-sliding-item-suffix> -->\n <ax-sliding-item-suffix (onClick)=\"onSlideAction(i, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-lg\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n } @else {\n <axm-chat-item [data]=\"i\" [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\" [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\" [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface\" [@fadeIn] tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\" role=\"button\" (contextmenu)=\"openContextMenu($event, i)\"></axm-chat-item>\n }\n } @empty {\n <div class=\"ax-p-4 ax-text-sm ax-text-center ax-text-muted\">\n @if (isSearching()) {\n No chats found matching your search.\n } @else {\n There are no conversations in this tab.\n }\n </div>\n }\n </div>\n }\n\n <!-- Footer Content -->\n @if (!layoutService.isMobileDevice()) {\n <div class=\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\">\n <ax-button class=\"ax-w-full\" color=\"primary\" text=\"New Conversation\" (onClick)=\"onNewConversation()\">\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n <ax-button class=\"ax-fixed ax-bottom-16 ax-right-8 !ax-rounded-full !ax-w-14 !ax-h-14 ax-shadow-lg\" color=\"primary\"\n (onClick)=\"onNewConversation()\">\n <ax-icon class=\"ax-text-2xl\">\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n</ng-template>\n\n<ax-context-menu #chatContext [openOn]=\"'click'\" [closeOn]=\"'click'\" [orientation]=\"'horizontal'\"\n (onOpening)=\"onContextOpening($event)\" (onItemClick)=\"onContextItemClick($event)\"></ax-context-menu>", styles: [""], dependencies: [{ kind: "component", type: AXMChatItemComponent, selector: "axm-chat-item", inputs: ["data", "typing", "lastMessageReaction"], outputs: ["pressChatItem"] }, { kind: "ngmodule", type:
3004
3063
  // Common Modules
3005
3064
  CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type:
3006
3065
  // Acorex Core Modules
3007
3066
  AXFormatModule }, { kind: "ngmodule", type: AXConversationModule }, { kind: "ngmodule", type: AXCommentModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type:
3008
3067
  // Acorex Component Modules
3009
3068
  // AXResizableDirective,
3010
- AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1$1.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: AXTextBoxModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i6$1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6$1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.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: AXLoadingModule }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutToolbarComponent, selector: "axp-layout-toolbar" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.AXTranslatorPipe, name: "translate" }], animations: [
3069
+ AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i2$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXSlidingItemModule }, { kind: "component", type: i4$2.AXSlidingItemComponent, selector: "ax-sliding-item" }, { kind: "component", type: i4$2.AXSlidingItemSuffixComponent, selector: "ax-sliding-item-suffix", inputs: ["color", "text"], outputs: ["onClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1$1.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: AXTextBoxModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i7$1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i7$1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.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: AXLoadingModule }, { kind: "ngmodule", type: AXWysiwygModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutToolbarComponent, selector: "axp-layout-toolbar" }, { kind: "component", type: AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.AXTranslatorPipe, name: "translate" }], animations: [
3011
3070
  trigger('fadeIn', [
3012
3071
  transition(':enter', [
3013
3072
  style({ opacity: 0, transform: 'translateY(10px)' }),
@@ -3040,6 +3099,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3040
3099
  AXImageModule,
3041
3100
  AXAvatarModule,
3042
3101
  AXBadgeModule,
3102
+ AXSlidingItemModule,
3043
3103
  AXDecoratorModule,
3044
3104
  AXTextBoxModule,
3045
3105
  AXSearchBoxModule,
@@ -3059,6 +3119,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3059
3119
  AXPThemeLayoutStartSideComponent,
3060
3120
  AXPThemeLayoutHeaderComponent,
3061
3121
  AXPThemeLayoutToolbarComponent,
3122
+ AXContextMenuComponent,
3062
3123
  ], animations: [
3063
3124
  trigger('fadeIn', [
3064
3125
  transition(':enter', [
@@ -3066,7 +3127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3066
3127
  animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
3067
3128
  ]),
3068
3129
  ]),
3069
- ], template: "<axp-page-layout #container>\n <axp-layout-start-side class=\"ax-border-e ax-lightest-surface ax-h-full\">\n <axp-layout-header>\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box\n #searchInput\n look=\"solid\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-full\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\">\n @if (!layoutService.isMobileDevice()) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content style=\"height: calc(100vh - 22rem)\">\n @if (selectedRoom()) {\n <router-outlet></router-outlet>\n } @else if (layoutService.isMobileDevice()) {\n <ax-search-box\n #searchInput\n look=\"solid\"\n [placeholder]=\"placeholder()\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-full ax-mb-2\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n<ng-template #template>\n <!-- Tabs -->\n <div [class]=\"!layoutService.isMobileDevice() ? 'ax-px-4' : ''\">\n <ax-tabs\n #tab\n class=\"ax-text-neutral-400 !ax-overflow-x-hidden\"\n [look]=\"'with-line'\"\n [location]=\"'bottom'\"\n [fitParent]=\"true\"\n (onActiveTabChanged)=\"activeTabIndex.set($event.index)\"\n >\n @for (tab of tabs(); track tab.id; let i = $index) {\n <ax-tab-item [text]=\"tab.title\" [active]=\"activeTabIndex() === i\">\n <ax-suffix>\n <ax-badge\n [text]=\"getRoomCountForTab(tab).toString()\"\n [color]=\"activeTabIndex() === i ? 'primary' : 'secondary'\"\n class=\"ax-min-w-[1.5rem] ax-justify-center\"\n ></ax-badge>\n </ax-suffix>\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n\n <!-- Chat List Content -->\n <div\n class=\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\"\n [class.ax-border-t]=\"tabs().length > 0\"\n >\n <!-- Loading State -->\n @if (isLoading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (error()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\">\n <ax-icon class=\"ax-text-danger ax-text-5xl ax-mb-3\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-text-secondary ax-mb-4\">{{ error() }}</p>\n <ax-button\n [text]=\"'try-again' | translate: { scope: 'conversation' } | async\"\n color=\"primary\"\n (onClick)=\"refreshChat()\"\n ></ax-button>\n </div>\n } @else {\n <div class=\"ax-flex-1 ax-overflow-y-auto\">\n @for (i of filteredRooms(); track i.id) {\n <axm-chat-item\n [data]=\"i\"\n [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\"\n [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\"\n [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface\"\n [@fadeIn]\n tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\"\n role=\"button\"\n ></axm-chat-item>\n } @empty {\n <div class=\"ax-p-4 ax-font-medium ax-text-center ax-text-secondary\">\n @if (isSearching()) {\n No chats found matching your search.\n } @else {\n There are no conversations in this tab.\n }\n </div>\n }\n </div>\n }\n\n <!-- Footer Content -->\n @if (!layoutService.isMobileDevice()) {\n <div class=\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\">\n <ax-button class=\"ax-w-full\" color=\"primary\" text=\"New Conversation\" (onClick)=\"onNewConversation()\">\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n <ax-button\n class=\"ax-fixed ax-bottom-16 ax-right-8 !ax-rounded-full !ax-w-14 !ax-h-14 ax-shadow-lg\"\n color=\"primary\"\n (onClick)=\"onNewConversation()\"\n >\n <ax-icon class=\"ax-text-2xl\">\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n</ng-template>\n" }]
3130
+ ], template: "<axp-page-layout #container>\n <axp-layout-start-side class=\"ax-border-e ax-lightest-surface ax-h-full\">\n <axp-layout-header>\n <axp-layout-title>{{ 'module-name' | translate: { scope: 'conversation' } | async }}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box #searchInput look=\"solid\" [placeholder]=\"placeholder()\" [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\" class=\"ax-w-full\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-min-h-0 ax-max-w-80\">\n @if (!layoutService.isMobileDevice()) {\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-layout-content>\n </axp-layout-start-side>\n\n <axp-page-content style=\"height: calc(100vh - 22rem)\">\n @if (selectedRoom()) {\n <router-outlet></router-outlet>\n } @else if (layoutService.isMobileDevice()) {\n <ax-search-box #searchInput look=\"solid\" [placeholder]=\"placeholder()\" [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\" class=\"ax-w-full ax-mb-2\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n<ng-template #template>\n <!-- Tabs -->\n <div [class]=\"!layoutService.isMobileDevice() ? 'ax-px-4' : ''\">\n <ax-tabs #tab class=\"ax-text-neutral-400 !ax-overflow-x-hidden\" [look]=\"'with-line'\" [location]=\"'bottom'\"\n [fitParent]=\"true\" (onActiveTabChanged)=\"activeTabIndex.set($event.index)\">\n @for (tab of tabs(); track tab.id; let i = $index) {\n <ax-tab-item [text]=\"tab.title\" [active]=\"activeTabIndex() === i\">\n @if (getRoomCountForTab(tab) > 0) {\n <ax-suffix>\n <ax-badge [text]=\"getRoomCountForTab(tab).toString()\"\n [color]=\"activeTabIndex() === i ? 'primary' : 'secondary'\"\n class=\"ax-min-w-[1.5rem] ax-justify-center\"></ax-badge>\n </ax-suffix>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n\n <!-- Chat List Content -->\n <div class=\"ax-flex-1 ax-overflow-hidden ax-flex ax-flex-col ax-justify-between ax-min-w-80\"\n [class.ax-border-t]=\"tabs().length > 0\">\n <!-- Loading State -->\n @if (isLoading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (error()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4 ax-text-center\">\n <ax-icon class=\"ax-text-danger ax-text-5xl ax-mb-3\">\n <i class=\"fa-light fa-circle-exclamation\"></i>\n </ax-icon>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-error' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-font-semibold ax-text-lg\">\n {{ 'chat-try-again' | translate: { scope: 'conversation' } | async }}\n </p>\n <p class=\"ax-text-secondary ax-mb-4\">{{ error() }}</p>\n <ax-button [text]=\"'try-again' | translate: { scope: 'conversation' } | async\" color=\"primary\"\n (onClick)=\"refreshChat()\"></ax-button>\n </div>\n } @else {\n <div class=\"ax-flex-1 ax-overflow-y-auto ax-pt-1\">\n @for (i of filteredRooms(); track i.id) {\n @if (layoutService.isMobileDevice()) {\n <ax-sliding-item class=\"ax-h-20\">\n <ax-content class=\"!ax-p-0\">\n <axm-chat-item [data]=\"i\" [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\" [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\" [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface ax-block\" [@fadeIn] tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\" role=\"button\" (contextmenu)=\"openContextMenu($event, i)\"></axm-chat-item>\n </ax-content>\n\n <!-- <ax-sliding-item-suffix (onClick)=\"onSlideAction(i, 'mute')\" color=\"warning\">\n <ax-icon class=\"fa-light fa-bell-slash fa-lg\"></ax-icon>\n </ax-sliding-item-suffix> -->\n <ax-sliding-item-suffix (onClick)=\"onSlideAction(i, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-lg\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n } @else {\n <axm-chat-item [data]=\"i\" [typing]=\"$any(typingStatus()[i.id])\"\n [lastMessageReaction]=\"i.lastMessage?.reactions?.[0]?.type ?? null\" [attr.data-id]=\"i.id\"\n (click)=\"openChat(i.id)\" [class.ax-bg-dark]=\"selectedRoom()?.id === i.id\"\n class=\"ax-transition-all ax-duration-100 hover:ax-bg-surface\" [@fadeIn] tabindex=\"0\"\n (keydown.enter)=\"openChat(i.id)\" role=\"button\" (contextmenu)=\"openContextMenu($event, i)\"></axm-chat-item>\n }\n } @empty {\n <div class=\"ax-p-4 ax-text-sm ax-text-center ax-text-muted\">\n @if (isSearching()) {\n No chats found matching your search.\n } @else {\n There are no conversations in this tab.\n }\n </div>\n }\n </div>\n }\n\n <!-- Footer Content -->\n @if (!layoutService.isMobileDevice()) {\n <div class=\"ax-border-t ax-border-divider ax-bg-lightest ax-p-4\">\n <ax-button class=\"ax-w-full\" color=\"primary\" text=\"New Conversation\" (onClick)=\"onNewConversation()\">\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n <ax-button class=\"ax-fixed ax-bottom-16 ax-right-8 !ax-rounded-full !ax-w-14 !ax-h-14 ax-shadow-lg\" color=\"primary\"\n (onClick)=\"onNewConversation()\">\n <ax-icon class=\"ax-text-2xl\">\n <i class=\"fa-solid fa-plus\"></i>\n </ax-icon>\n </ax-button>\n }\n </div>\n</ng-template>\n\n<ax-context-menu #chatContext [openOn]=\"'click'\" [closeOn]=\"'click'\" [orientation]=\"'horizontal'\"\n (onOpening)=\"onContextOpening($event)\" (onItemClick)=\"onContextItemClick($event)\"></ax-context-menu>" }]
3070
3131
  }], propDecorators: { onKeydownHandler: [{
3071
3132
  type: HostListener,
3072
3133
  args: ['document:keydown.escape', ['$event']]
@@ -3613,6 +3674,24 @@ var chatPreview_component = /*#__PURE__*/Object.freeze({
3613
3674
  AXMChatPreviewComponent: AXMChatPreviewComponent
3614
3675
  });
3615
3676
 
3677
+ class AXMChatBadgeProviderSimple {
3678
+ constructor() {
3679
+ this.chatService = inject(AXMChatManagementService);
3680
+ this.key = 'badge-chat';
3681
+ this.count = signal(0, ...(ngDevMode ? [{ debugName: "count" }] : []));
3682
+ this.#eff = effect(async () => {
3683
+ const response = await this.chatService.listRooms();
3684
+ this.count.set(response.items.filter((i) => i.unreadCount > 0).length);
3685
+ }, ...(ngDevMode ? [{ debugName: "#eff" }] : []));
3686
+ }
3687
+ #eff;
3688
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChatBadgeProviderSimple, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3689
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChatBadgeProviderSimple }); }
3690
+ }
3691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXMChatBadgeProviderSimple, decorators: [{
3692
+ type: Injectable
3693
+ }] });
3694
+
3616
3695
  class AXMChatNotificationContentComponent {
3617
3696
  constructor() {
3618
3697
  this.item = input(...(ngDevMode ? [undefined, { debugName: "item" }] : []));
@@ -3761,6 +3840,82 @@ const AXM_COMMENT_NOTIFICATION_PROVIDERS = [
3761
3840
  ];
3762
3841
  //#endregion
3763
3842
 
3843
+ const commentsPlugin = {
3844
+ name: 'comments',
3845
+ order: 50,
3846
+ apply: (ctx) => {
3847
+ // Ensure group exists
3848
+ const groups = ctx.groups.list() ?? [];
3849
+ if (!groups.some((g) => g.id === 'comments')) {
3850
+ ctx.groups.add({ id: 'comments', title: 'Comments' });
3851
+ }
3852
+ // Ensure property exists
3853
+ const props = ctx.properties.list();
3854
+ if (!props.some((p) => p.name === 'comments')) {
3855
+ ctx.properties.add({
3856
+ name: 'comments',
3857
+ title: 'Comments',
3858
+ groupId: 'comments',
3859
+ schema: {
3860
+ dataType: 'object',
3861
+ interface: {
3862
+ type: 'comment',
3863
+ options: {
3864
+ refrenceType: `${ctx.entity.module}.${ctx.entity.name}`,
3865
+ refrenceId: '{{ context.eval("id") }}',
3866
+ subject: '{{ context.eval("title") }}',
3867
+ },
3868
+ },
3869
+ },
3870
+ });
3871
+ }
3872
+ // Ensure single view section and property layout exists
3873
+ ctx.interfaces.master.single.update((single) => {
3874
+ const next = single ?? { title: ctx.entity.title, sections: [], properties: [] };
3875
+ next.sections = next.sections ?? [];
3876
+ if (!next.sections.some((s) => s.id === 'comments')) {
3877
+ next.sections.push({ id: 'comments' });
3878
+ }
3879
+ next.properties = next.properties ?? [];
3880
+ if (!next.properties.some((p) => p.name === 'comments')) {
3881
+ next.properties.push({
3882
+ name: 'comments',
3883
+ layout: {
3884
+ label: { visible: false },
3885
+ positions: { lg: { colSpan: 12, order: 7 } },
3886
+ },
3887
+ });
3888
+ }
3889
+ //
3890
+ return next;
3891
+ });
3892
+ // Ensure list action to open comments popup exists
3893
+ ensureListActions(ctx);
3894
+ ctx.interfaces.update((i) => {
3895
+ const actions = i.master.list.actions;
3896
+ const cmdName = 'show-comment-popup';
3897
+ if (!actionExists(actions, cmdName)) {
3898
+ actions.push({
3899
+ title: '@conversation:actions.show-comment-popup',
3900
+ command: {
3901
+ name: cmdName,
3902
+ options: {
3903
+ refId: '{{ context.eval("id") }}',
3904
+ refType: `${ctx.entity.module}.${ctx.entity.name}`,
3905
+ subject: '{{ context.eval("title") }}',
3906
+ },
3907
+ },
3908
+ priority: 'secondary',
3909
+ type: 'comments',
3910
+ separated: true,
3911
+ scope: AXPEntityCommandScope.Individual,
3912
+ });
3913
+ }
3914
+ return i;
3915
+ });
3916
+ },
3917
+ };
3918
+
3764
3919
  function routesFactory() {
3765
3920
  const routes = [
3766
3921
  {
@@ -3858,6 +4013,11 @@ class AXMConversationModule {
3858
4013
  provide: AXMCommentRealtimeService,
3859
4014
  useClass: AXMCommentRealtimeServiceImpl,
3860
4015
  },
4016
+ {
4017
+ provide: AXP_ENTITY_ACTION_PLUGIN,
4018
+ useValue: commentsPlugin,
4019
+ multi: true,
4020
+ },
3861
4021
  // Entity Provider
3862
4022
  {
3863
4023
  provide: AXP_ENTITY_DEFINITION_LOADER,
@@ -3869,6 +4029,11 @@ class AXMConversationModule {
3869
4029
  useClass: AXMMenuProvider,
3870
4030
  multi: true,
3871
4031
  },
4032
+ {
4033
+ provide: AXP_TASK_BADGE_PROVIDERS,
4034
+ useClass: AXMChatBadgeProviderSimple,
4035
+ multi: true,
4036
+ },
3872
4037
  {
3873
4038
  provide: ROUTES,
3874
4039
  multi: true,
@@ -3951,6 +4116,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3951
4116
  provide: AXMCommentRealtimeService,
3952
4117
  useClass: AXMCommentRealtimeServiceImpl,
3953
4118
  },
4119
+ {
4120
+ provide: AXP_ENTITY_ACTION_PLUGIN,
4121
+ useValue: commentsPlugin,
4122
+ multi: true,
4123
+ },
3954
4124
  // Entity Provider
3955
4125
  {
3956
4126
  provide: AXP_ENTITY_DEFINITION_LOADER,
@@ -3962,6 +4132,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3962
4132
  useClass: AXMMenuProvider,
3963
4133
  multi: true,
3964
4134
  },
4135
+ {
4136
+ provide: AXP_TASK_BADGE_PROVIDERS,
4137
+ useClass: AXMChatBadgeProviderSimple,
4138
+ multi: true,
4139
+ },
3965
4140
  {
3966
4141
  provide: ROUTES,
3967
4142
  multi: true,