@acorex/modules 20.2.4-next.2 → 20.2.4-next.3

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 (186) hide show
  1. package/conversation/index.d.ts +1 -0
  2. package/customer-management/index.d.ts +167 -0
  3. package/document-management/index.d.ts +99 -13
  4. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BbO_ea5W.mjs → acorex-modules-auth-acorex-modules-auth-C3KbvhSU.mjs} +10 -10
  5. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BbO_ea5W.mjs.map → acorex-modules-auth-acorex-modules-auth-C3KbvhSU.mjs.map} +1 -1
  6. package/fesm2022/{acorex-modules-auth-app-chooser.component-y0HLrwJM.mjs → acorex-modules-auth-app-chooser.component-1rAktuKq.mjs} +2 -2
  7. package/fesm2022/{acorex-modules-auth-app-chooser.component-y0HLrwJM.mjs.map → acorex-modules-auth-app-chooser.component-1rAktuKq.mjs.map} +1 -1
  8. package/fesm2022/{acorex-modules-auth-login.module-1U_5UgDs.mjs → acorex-modules-auth-login.module-Bq2itSg_.mjs} +4 -4
  9. package/fesm2022/{acorex-modules-auth-login.module-1U_5UgDs.mjs.map → acorex-modules-auth-login.module-Bq2itSg_.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-auth-master.layout-DGsAGhOH.mjs → acorex-modules-auth-master.layout-DONbu77t.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-auth-master.layout-DGsAGhOH.mjs.map → acorex-modules-auth-master.layout-DONbu77t.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CPHBV5bA.mjs → acorex-modules-auth-oauth-callback.component-BgzmfTlY.mjs} +2 -2
  13. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CPHBV5bA.mjs.map → acorex-modules-auth-oauth-callback.component-BgzmfTlY.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-auth-password.component-CF3ReHyw.mjs → acorex-modules-auth-password.component-B9LqFrEG.mjs} +2 -2
  15. package/fesm2022/{acorex-modules-auth-password.component-CF3ReHyw.mjs.map → acorex-modules-auth-password.component-B9LqFrEG.mjs.map} +1 -1
  16. package/fesm2022/{acorex-modules-auth-password.component-C85NgQxA.mjs → acorex-modules-auth-password.component-BuGTsfLH.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-auth-password.component-C85NgQxA.mjs.map → acorex-modules-auth-password.component-BuGTsfLH.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-auth-routes-BJh0Fwpy.mjs → acorex-modules-auth-routes-833kPM6o.mjs} +2 -2
  19. package/fesm2022/{acorex-modules-auth-routes-BJh0Fwpy.mjs.map → acorex-modules-auth-routes-833kPM6o.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-Bsh2_A5L.mjs → acorex-modules-auth-two-factor.module-BS1Pcbxp.mjs} +2 -2
  21. package/fesm2022/{acorex-modules-auth-two-factor.module-Bsh2_A5L.mjs.map → acorex-modules-auth-two-factor.module-BS1Pcbxp.mjs.map} +1 -1
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-ChMkstLg.mjs → acorex-modules-auth-user-sessions.component-BXHfWAbP.mjs} +3 -3
  23. package/fesm2022/acorex-modules-auth-user-sessions.component-BXHfWAbP.mjs.map +1 -0
  24. package/fesm2022/acorex-modules-auth.mjs +1 -1
  25. package/fesm2022/acorex-modules-common.mjs +1 -1
  26. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  27. package/fesm2022/acorex-modules-conversation.mjs +46 -29
  28. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  29. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-OQ1bNJgq.mjs +679 -0
  30. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-OQ1bNJgq.mjs.map +1 -0
  31. package/fesm2022/acorex-modules-customer-management-activity.entity-DMe1FSzX.mjs +98 -0
  32. package/fesm2022/acorex-modules-customer-management-activity.entity-DMe1FSzX.mjs.map +1 -0
  33. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-BwaPguXv.mjs +83 -0
  34. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-BwaPguXv.mjs.map +1 -0
  35. package/fesm2022/acorex-modules-customer-management-customer-type.entity--593B7S-.mjs +95 -0
  36. package/fesm2022/acorex-modules-customer-management-customer-type.entity--593B7S-.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-customer-management-customer.entity-Bh9tz06I.mjs +344 -0
  38. package/fesm2022/acorex-modules-customer-management-customer.entity-Bh9tz06I.mjs.map +1 -0
  39. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-CZIIOqbm.mjs +147 -0
  40. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-CZIIOqbm.mjs.map +1 -0
  41. package/fesm2022/acorex-modules-customer-management-lead.entity-DGtsH0mF.mjs +97 -0
  42. package/fesm2022/acorex-modules-customer-management-lead.entity-DGtsH0mF.mjs.map +1 -0
  43. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-BAsoYXzc.mjs +72 -0
  44. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-BAsoYXzc.mjs.map +1 -0
  45. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-CwWixlpD.mjs +72 -0
  46. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-CwWixlpD.mjs.map +1 -0
  47. package/fesm2022/acorex-modules-customer-management-opportunity.entity-U0QaZb0W.mjs +188 -0
  48. package/fesm2022/acorex-modules-customer-management-opportunity.entity-U0QaZb0W.mjs.map +1 -0
  49. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-BKl_WTld.mjs +72 -0
  50. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-BKl_WTld.mjs.map +1 -0
  51. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-DKV0CYPg.mjs +72 -0
  52. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-DKV0CYPg.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-customer-management.mjs +2 -0
  54. package/fesm2022/acorex-modules-customer-management.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  56. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  57. package/fesm2022/acorex-modules-data-management.mjs +3 -3
  58. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  59. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs → acorex-modules-document-management-acorex-modules-document-management-uQnZ0m0T.mjs} +1441 -432
  60. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-uQnZ0m0T.mjs.map +1 -0
  61. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs → acorex-modules-document-management-attachment-widget.component-Be8WgyUR.mjs} +2 -2
  62. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs.map → acorex-modules-document-management-attachment-widget.component-Be8WgyUR.mjs.map} +1 -1
  63. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs → acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs} +4 -4
  64. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BlyK5a50.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs → acorex-modules-document-management-details-view.component-BlTJ_p5m.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs.map → acorex-modules-document-management-details-view.component-BlTJ_p5m.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs → acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs} +4 -4
  68. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs.map +1 -0
  69. package/fesm2022/{acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs → acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs} +4 -4
  70. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs.map +1 -0
  71. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs → acorex-modules-document-management-document-signature-popup.component-BONQz9u3.mjs} +4 -4
  72. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs.map → acorex-modules-document-management-document-signature-popup.component-BONQz9u3.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs → acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs} +4 -4
  74. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs.map → acorex-modules-document-management-drive-choose.component-B1CoE7aP.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs → acorex-modules-document-management-drive.component-I5pzEVVg.mjs} +5 -5
  76. package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs.map → acorex-modules-document-management-drive.component-I5pzEVVg.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs → acorex-modules-document-management-large-icons-view.component-9GtpGvk4.mjs} +2 -2
  78. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs.map → acorex-modules-document-management-large-icons-view.component-9GtpGvk4.mjs.map} +1 -1
  79. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs → acorex-modules-document-management-large-tiles-view.component-ByBZUD_u.mjs} +2 -2
  80. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs.map → acorex-modules-document-management-large-tiles-view.component-ByBZUD_u.mjs.map} +1 -1
  81. package/fesm2022/{acorex-modules-document-management-link-dialog.component-DM1Djews.mjs → acorex-modules-document-management-link-dialog.component-DKOod11R.mjs} +2 -2
  82. package/fesm2022/acorex-modules-document-management-link-dialog.component-DKOod11R.mjs.map +1 -0
  83. package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs → acorex-modules-document-management-list-view.component-ClW5GdHG.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs.map → acorex-modules-document-management-list-view.component-ClW5GdHG.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs} +3 -3
  86. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs.map → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs.map} +1 -1
  87. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs → acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs} +2 -2
  88. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs.map → acorex-modules-document-management-permission-definition.provider-CljbPHm-.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs → acorex-modules-document-management-rename-node-dialog.component-xeY0XzAG.mjs} +4 -4
  90. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs.map → acorex-modules-document-management-rename-node-dialog.component-xeY0XzAG.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-document-management-share-dialog.component-BNN3t8AV.mjs → acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs} +2 -2
  92. package/fesm2022/acorex-modules-document-management-share-dialog.component-mBEu2KpG.mjs.map +1 -0
  93. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-8WAUtRyJ.mjs → acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs} +2 -2
  94. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-CI4SKdjk.mjs.map +1 -0
  95. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs → acorex-modules-document-management-small-icons-view.component--GP3AYPi.mjs} +2 -2
  96. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs.map → acorex-modules-document-management-small-icons-view.component--GP3AYPi.mjs.map} +1 -1
  97. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs → acorex-modules-document-management-small-tiles-view.component-BVxR6ndq.mjs} +2 -2
  98. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs.map → acorex-modules-document-management-small-tiles-view.component-BVxR6ndq.mjs.map} +1 -1
  99. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  100. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs → acorex-modules-help-desk-acorex-modules-help-desk-UzQZBc6W.mjs} +19 -79
  101. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-UzQZBc6W.mjs.map +1 -0
  102. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs → acorex-modules-help-desk-capture-screen.component-C4veMiCB.mjs} +4 -4
  103. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs.map → acorex-modules-help-desk-capture-screen.component-C4veMiCB.mjs.map} +1 -1
  104. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  105. package/fesm2022/acorex-modules-log-management.mjs +261 -10
  106. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  107. package/fesm2022/{acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs → acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs} +2 -2
  108. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs.map +1 -0
  109. package/fesm2022/acorex-modules-meeting-management.mjs +33 -7
  110. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
  111. package/fesm2022/{acorex-modules-organization-management-add-item.component-B7AYaZrD.mjs → acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs} +2 -2
  112. package/fesm2022/acorex-modules-organization-management-add-item.component-DkXcoyHa.mjs.map +1 -0
  113. package/fesm2022/{acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs → acorex-modules-organization-management-branch.entity-Dres_jqx.mjs} +4 -2
  114. package/fesm2022/acorex-modules-organization-management-branch.entity-Dres_jqx.mjs.map +1 -0
  115. package/fesm2022/{acorex-modules-organization-management-department.entity-BbBrK4BN.mjs → acorex-modules-organization-management-department.entity-Cot-9HVC.mjs} +4 -2
  116. package/fesm2022/acorex-modules-organization-management-department.entity-Cot-9HVC.mjs.map +1 -0
  117. package/fesm2022/{acorex-modules-organization-management-division.entity-DdX7LcCU.mjs → acorex-modules-organization-management-division.entity-Dg68kBto.mjs} +11 -5
  118. package/fesm2022/acorex-modules-organization-management-division.entity-Dg68kBto.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-organization-management-employee-skill.entity-DoQcCwQz.mjs +296 -0
  120. package/fesm2022/acorex-modules-organization-management-employee-skill.entity-DoQcCwQz.mjs.map +1 -0
  121. package/fesm2022/{acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs → acorex-modules-organization-management-employee.entity-BuvyXqnP.mjs} +103 -200
  122. package/fesm2022/acorex-modules-organization-management-employee.entity-BuvyXqnP.mjs.map +1 -0
  123. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs} +2 -2
  124. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs.map → acorex-modules-organization-management-org-chart.page-DuyhYwnh.mjs.map} +1 -1
  125. package/fesm2022/{acorex-modules-organization-management-role.entity-BdjgFsgo.mjs → acorex-modules-organization-management-position.entity-DK-i78ck.mjs} +18 -93
  126. package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +1 -0
  127. package/fesm2022/{acorex-modules-organization-management-position.entity-DT7EyvrR.mjs → acorex-modules-organization-management-role.entity-DVoKtduv.mjs} +10 -25
  128. package/fesm2022/acorex-modules-organization-management-role.entity-DVoKtduv.mjs.map +1 -0
  129. package/fesm2022/{acorex-modules-organization-management-team.entity-DkRLWl0u.mjs → acorex-modules-organization-management-team.entity-D6iNAU4g.mjs} +14 -12
  130. package/fesm2022/acorex-modules-organization-management-team.entity-D6iNAU4g.mjs.map +1 -0
  131. package/fesm2022/acorex-modules-organization-management.mjs +61 -156
  132. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  133. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs → acorex-modules-party-management-acorex-modules-party-management-BY6hXmhQ.mjs} +42 -7
  134. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BY6hXmhQ.mjs.map +1 -0
  135. package/fesm2022/acorex-modules-party-management-industry.entity-CALiUOAF.mjs +91 -0
  136. package/fesm2022/acorex-modules-party-management-industry.entity-CALiUOAF.mjs.map +1 -0
  137. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs → acorex-modules-party-management-party-identifier-type.entity-BTkKl8Ka.mjs} +2 -2
  138. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs.map → acorex-modules-party-management-party-identifier-type.entity-BTkKl8Ka.mjs.map} +1 -1
  139. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs → acorex-modules-party-management-party-identifier.entity-eDKHu-Ek.mjs} +2 -2
  140. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs.map → acorex-modules-party-management-party-identifier.entity-eDKHu-Ek.mjs.map} +1 -1
  141. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs → acorex-modules-party-management-party-relationship.entity-BNTNx-oY.mjs} +2 -2
  142. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs.map → acorex-modules-party-management-party-relationship.entity-BNTNx-oY.mjs.map} +1 -1
  143. package/fesm2022/{acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs → acorex-modules-party-management-party-role.entity-iETQVgTK.mjs} +3 -3
  144. package/fesm2022/acorex-modules-party-management-party-role.entity-iETQVgTK.mjs.map +1 -0
  145. package/fesm2022/{acorex-modules-party-management-party.entity-BwAAZRJc.mjs → acorex-modules-party-management-party.entity-lRpTfdRp.mjs} +7 -7
  146. package/fesm2022/acorex-modules-party-management-party.entity-lRpTfdRp.mjs.map +1 -0
  147. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  148. package/fesm2022/acorex-modules-project-management.mjs +1 -1
  149. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  150. package/fesm2022/{acorex-modules-report-management-report-create-root.component-DAOMkt_F.mjs → acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs} +2 -2
  151. package/fesm2022/acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs.map +1 -0
  152. package/fesm2022/acorex-modules-report-management.mjs +290 -161
  153. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  154. package/fesm2022/acorex-modules-security-management.mjs +32 -77
  155. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  156. package/fesm2022/{acorex-modules-task-management-task-board.page-BBbHu2jz.mjs → acorex-modules-task-management-task-board.page-DsaCXemI.mjs} +5 -5
  157. package/fesm2022/acorex-modules-task-management-task-board.page-DsaCXemI.mjs.map +1 -0
  158. package/fesm2022/acorex-modules-task-management.mjs +2 -2
  159. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  160. package/organization-management/index.d.ts +49 -16
  161. package/package.json +5 -1
  162. package/party-management/index.d.ts +6 -0
  163. package/report-management/index.d.ts +234 -231
  164. package/fesm2022/acorex-modules-auth-user-sessions.component-ChMkstLg.mjs.map +0 -1
  165. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs.map +0 -1
  166. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs.map +0 -1
  167. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +0 -1
  168. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +0 -1
  169. package/fesm2022/acorex-modules-document-management-link-dialog.component-DM1Djews.mjs.map +0 -1
  170. package/fesm2022/acorex-modules-document-management-share-dialog.component-BNN3t8AV.mjs.map +0 -1
  171. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-8WAUtRyJ.mjs.map +0 -1
  172. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs.map +0 -1
  173. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +0 -1
  174. package/fesm2022/acorex-modules-organization-management-add-item.component-B7AYaZrD.mjs.map +0 -1
  175. package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs.map +0 -1
  176. package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs.map +0 -1
  177. package/fesm2022/acorex-modules-organization-management-division.entity-DdX7LcCU.mjs.map +0 -1
  178. package/fesm2022/acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs.map +0 -1
  179. package/fesm2022/acorex-modules-organization-management-position.entity-DT7EyvrR.mjs.map +0 -1
  180. package/fesm2022/acorex-modules-organization-management-role.entity-BdjgFsgo.mjs.map +0 -1
  181. package/fesm2022/acorex-modules-organization-management-team.entity-DkRLWl0u.mjs.map +0 -1
  182. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs.map +0 -1
  183. package/fesm2022/acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs.map +0 -1
  184. package/fesm2022/acorex-modules-party-management-party.entity-BwAAZRJc.mjs.map +0 -1
  185. package/fesm2022/acorex-modules-report-management-report-create-root.component-DAOMkt_F.mjs.map +0 -1
  186. package/fesm2022/acorex-modules-task-management-task-board.page-BBbHu2jz.mjs.map +0 -1
@@ -3,26 +3,27 @@ import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPLockS
3
3
  import { AXPDomainModule, provideEntity } from '@acorex/platform/domain';
4
4
  import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, inject, Injectable, NgModule, computed, viewChild, effect, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, input } from '@angular/core';
6
+ import { InjectionToken, inject, Injectable, NgModule, computed, effect, signal, ChangeDetectionStrategy, Component, viewChild, ViewEncapsulation, input } from '@angular/core';
7
7
  import { ROUTES, ActivatedRoute, Router } from '@angular/router';
8
8
  import { AXPQueryService, AXPCommandService } from '@acorex/platform/runtime';
9
9
  import { AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, getSystemActions, applySystemActionDefault } from '@acorex/platform/core';
10
10
  import * as i1 from '@acorex/platform/workflow';
11
11
  import { AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
12
12
  import { AXDataSource } from '@acorex/cdk/common';
13
- import * as i1$3 from '@acorex/core/translation';
13
+ import * as i1$1 from '@acorex/core/translation';
14
14
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
15
15
  import { AXMDataSourceService } from '@acorex/modules/data-management';
16
16
  import * as i2 from '@acorex/platform/layout/builder';
17
17
  import { AXPWidgetsCatalog, AXPPageStatus, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
18
18
  import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
19
19
  import { AXPopupService } from '@acorex/components/popup';
20
- import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
21
- import { AXLocaleService } from '@acorex/core/locale';
22
20
  import * as i2$1 from '@acorex/components/button';
23
21
  import { AXButtonModule } from '@acorex/components/button';
24
22
  import * as i3 from '@acorex/components/decorators';
25
23
  import { AXDecoratorModule } from '@acorex/components/decorators';
24
+ import * as i5 from '@acorex/components/dropdown';
25
+ import { AXDropdownModule } from '@acorex/components/dropdown';
26
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
26
27
  import { AXLoadingModule } from '@acorex/components/loading';
27
28
  import { AXUnsubscriber } from '@acorex/core/utils';
28
29
  import { AXPDynamicFormComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutFooterComponent } from '@acorex/platform/layout/components';
@@ -30,13 +31,14 @@ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase }
30
31
  import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
31
32
  import * as i1$2 from '@angular/common';
32
33
  import { CommonModule } from '@angular/common';
33
- import * as i1$1 from '@acorex/components/data-table';
34
- import { AXDataTableModule } from '@acorex/components/data-table';
35
- import { AXDonutChartComponent } from '@acorex/charts/donut-chart';
34
+ import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
35
+ import { AXLocaleService } from '@acorex/core/locale';
36
+ import { AXBarChartComponent } from '@acorex/charts/bar-chart';
36
37
  import { AXChartLegendComponent } from '@acorex/charts/chart-legend';
37
- import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
38
- import * as i5 from '@acorex/components/dropdown';
39
- import { AXDropdownModule } from '@acorex/components/dropdown';
38
+ import { AXDonutChartComponent } from '@acorex/charts/donut-chart';
39
+ import { AXLineChartComponent } from '@acorex/charts/line-chart';
40
+ import * as i1$3 from '@acorex/components/data-table';
41
+ import { AXDataTableModule } from '@acorex/components/data-table';
40
42
 
41
43
  const config = {
42
44
  i18n: 'report-management',
@@ -302,22 +304,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
302
304
  }]
303
305
  }] });
304
306
 
305
- function AXPBarChartReportMapper(data, options) {
306
- return data.map((item) => {
307
- return {
308
- id: item.id,
309
- label: item[options.xField],
310
- value: Array.isArray(options.yFields) ? item[options.yFields[0]] : item[options.yFields]
311
- };
312
- });
313
- }
314
307
  function AXPieChartReportMapper(data) {
315
308
  return Object.entries(data).map(([key, value]) => ({
316
309
  id: key,
317
310
  label: key,
318
- value: value
311
+ value: value,
319
312
  }));
320
313
  }
314
+ function AXBarChartReportMapper(data) {
315
+ return Object.entries(data).map(([key, value]) => ({
316
+ id: key,
317
+ label: key,
318
+ value: value,
319
+ }));
320
+ }
321
+ function AXLineChartReportMapper(data) {
322
+ const entries = Object.entries(data);
323
+ if (entries.length === 0) {
324
+ return [];
325
+ }
326
+ const dataPoints = entries.map(([key, value]) => ({
327
+ x: key,
328
+ y: value,
329
+ }));
330
+ return [
331
+ {
332
+ id: 'series-1',
333
+ label: 'Data Series',
334
+ tooltipLabel: 'Countries Info',
335
+ lineColor: '#d81159',
336
+ fillColor: '#d8115920',
337
+ data: dataPoints,
338
+ },
339
+ ];
340
+ }
321
341
 
322
342
  class AXMReportDefinitionProvider {
323
343
  constructor() {
@@ -1224,7 +1244,7 @@ class AXMReportCreateRootWorkflowAction extends AXPWorkflowAction {
1224
1244
  }
1225
1245
  async execute(context) {
1226
1246
  // const refId = context.getVariable<string>('options.refId');
1227
- const comp = await import('./acorex-modules-report-management-report-create-root.component-DAOMkt_F.mjs').then(m => m.AXPReportCreateRootComponent);
1247
+ const comp = await import('./acorex-modules-report-management-report-create-root.component-L-7aG8op.mjs').then(m => m.AXPReportCreateRootComponent);
1228
1248
  this.popupService.open(comp, await this.translationService.translateAsync('report.create.title', { scope: 'report-management' }));
1229
1249
  }
1230
1250
  }
@@ -1498,8 +1518,12 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
1498
1518
  const executeReport = async () => {
1499
1519
  const report = store.reportDefinition();
1500
1520
  const layout = store.currentLayout();
1501
- if (!report || !layout)
1521
+ if (!report || !layout) {
1522
+ patchState(store, {
1523
+ error: 'Report or layout not found',
1524
+ });
1502
1525
  return;
1526
+ }
1503
1527
  patchState(store, {
1504
1528
  status: AXPPageStatus.Submitting,
1505
1529
  error: null
@@ -1684,6 +1708,116 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
1684
1708
  }
1685
1709
  })));
1686
1710
 
1711
+ class AXPReportChartViewComponent {
1712
+ constructor() {
1713
+ //#region ---- Dependencies ----
1714
+ this.vm = inject(AXPReportViewerViewModel);
1715
+ this.AXPPageStatus = AXPPageStatus;
1716
+ //#endregion
1717
+ //#region ---- Computed Properties ----
1718
+ /**
1719
+ * Current chart layout configuration
1720
+ */
1721
+ this.chartLayout = computed(() => {
1722
+ const layout = this.vm.currentLayout();
1723
+ return layout?.layout.type === 'chart' ? layout.layout : null;
1724
+ }, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
1725
+ /**
1726
+ * Chart configuration options
1727
+ */
1728
+ this.chartOptions = computed(() => {
1729
+ const chartLayout = this.chartLayout();
1730
+ return chartLayout?.options || null;
1731
+ }, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
1732
+ /**
1733
+ * Chart type for rendering
1734
+ */
1735
+ this.chartType = computed(() => {
1736
+ const options = this.chartOptions();
1737
+ return options?.chartType || 'bar';
1738
+ }, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
1739
+ /**
1740
+ * Data mapping configuration
1741
+ */
1742
+ this.dataMapping = computed(() => {
1743
+ const options = this.chartOptions();
1744
+ return options?.dataMapping || null;
1745
+ }, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
1746
+ //#endregion
1747
+ //#region ---- Effects ----
1748
+ /**
1749
+ * Effect to fetch chart data when conditions are met
1750
+ */
1751
+ this.#fetchData = effect(() => {
1752
+ if (this.vm.allowFetchData() && this.chartOptions()) {
1753
+ this.vm.fetchData().then((data) => {
1754
+ const raw = ((data?.data).data ?? {});
1755
+ switch (this.chartType()) {
1756
+ case 'bar': {
1757
+ const v = AXBarChartReportMapper(raw);
1758
+ this.barChartData.set(v);
1759
+ break;
1760
+ }
1761
+ case 'doughnut': {
1762
+ const v = AXPieChartReportMapper(raw);
1763
+ this.donutChartData.set(v);
1764
+ break;
1765
+ }
1766
+ case 'line':
1767
+ default: {
1768
+ const v = AXLineChartReportMapper(raw);
1769
+ this.lineChartData.set(v);
1770
+ break;
1771
+ }
1772
+ }
1773
+ });
1774
+ }
1775
+ }, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
1776
+ this.legendOptions = signal({
1777
+ mode: 'vertical',
1778
+ }, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
1779
+ this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
1780
+ this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
1781
+ this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: "donutChartData" }] : []));
1782
+ this.donutChartOptions = signal({
1783
+ totalLabel: 'Total',
1784
+ showTooltip: true,
1785
+ }, ...(ngDevMode ? [{ debugName: "donutChartOptions" }] : []));
1786
+ this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: "lineChartData" }] : []));
1787
+ this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "lineChartOptions" }] : []));
1788
+ }
1789
+ //#endregion
1790
+ //#region ---- Effects ----
1791
+ /**
1792
+ * Effect to fetch chart data when conditions are met
1793
+ */
1794
+ #fetchData;
1795
+ //#endregion
1796
+ //#region ---- Helper Methods ----
1797
+ /**
1798
+ * Check if chart is ready to render
1799
+ */
1800
+ isChartReady() {
1801
+ return !!(this.chartOptions() && this.dataMapping());
1802
+ }
1803
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1804
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportChartViewComponent, isStandalone: true, selector: "axp-report-chart-view", host: { classAttribute: "axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col" }, ngImport: i0, template: "<ng-container *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"ax-spinner ax-spin ax-w-10 ax-h-10\"></div>\n <div class=\"__loading-text ax-text-sm ax-opacity-70\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__error-icon ax-text-5xl ax-text-danger\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__error-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description ax-opacity-70 ax-leading-relaxed\">\n {{ vm.error() || (t('@report-management:features.report-viewer.error.generic') | async) }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <section\n class=\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\"\n >\n @if (chartLayout()?.header) {\n <header\n class=\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\"\n >\n <h3 class=\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\">\n {{ chartLayout()?.header?.title }}\n </h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\">\n {{ 'common.date.today' | translate | async }}\n </div>\n }\n </header>\n }\n\n <div class=\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\">\n <div\n class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\"\n [class]=\"\n legendOptions().mode === 'horizontal'\n ? 'ax-flex-col ax-gap-4'\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\n \"\n >\n @switch (chartType()) {\n @case ('bar') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-bar-chart #barChart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"barChart\"></ax-chart-legend>\n </div>\n }\n @case ('doughnut') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-donut-chart #donutChart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"donutChart\"></ax-chart-legend>\n </div>\n }\n @default {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-line-chart #lineChart [data]=\"lineChartData()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"lineChart\"></ax-chart-legend>\n </div>\n }\n }\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <footer class=\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </footer>\n }\n </section>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__no-config-icon ax-w-16 ax-h-16 ax-rounded-full ax-flex ax-items-center ax-justify-center\">\n <i class=\"fa-light fa-chart-line ax-text-2xl ax-opacity-60\"></i>\n </div>\n <div class=\"__no-config-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__no-config-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description ax-opacity-70 ax-leading-relaxed\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }, { kind: "component", type: AXLineChartComponent, selector: "ax-line-chart", inputs: ["data", "options"], outputs: ["pointClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1805
+ }
1806
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{
1807
+ type: Component,
1808
+ args: [{ selector: 'axp-report-chart-view', imports: [
1809
+ CommonModule,
1810
+ AXTranslationModule,
1811
+ AXPLayoutBuilderModule,
1812
+ AXBarChartComponent,
1813
+ AXDonutChartComponent,
1814
+ AXLineChartComponent,
1815
+ AXChartLegendComponent,
1816
+ ], host: {
1817
+ class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',
1818
+ }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"ax-spinner ax-spin ax-w-10 ax-h-10\"></div>\n <div class=\"__loading-text ax-text-sm ax-opacity-70\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__error-icon ax-text-5xl ax-text-danger\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__error-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description ax-opacity-70 ax-leading-relaxed\">\n {{ vm.error() || (t('@report-management:features.report-viewer.error.generic') | async) }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <section\n class=\"__chart-container ax-overflow-auto md:ax-overflow-hidden ax-rounded-2xl ax-border ax-h-full ax-flex ax-flex-col\"\n >\n @if (chartLayout()?.header) {\n <header\n class=\"__chart-header ax-p-4 md:ax-p-6 ax-border-b ax-flex ax-flex-col sm:ax-flex-row ax-gap-2 sm:ax-items-center sm:ax-justify-between\"\n >\n <h3 class=\"__chart-title ax-text-base md:ax-text-lg ax-font-semibold ax-truncate\">\n {{ chartLayout()?.header?.title }}\n </h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date ax-text-xs md:ax-text-sm ax-opacity-70 ax-font-medium ax-flex-shrink-0\">\n {{ 'common.date.today' | translate | async }}\n </div>\n }\n </header>\n }\n\n <div class=\"__chart-body ax-flex-1 ax-p-3 md:ax-p-6\">\n <div\n class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\"\n [class]=\"\n legendOptions().mode === 'horizontal'\n ? 'ax-flex-col ax-gap-4'\n : 'ax-flex-col lg:ax-flex-row ax-gap-4 lg:ax-gap-6'\n \"\n >\n @switch (chartType()) {\n @case ('bar') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-bar-chart #barChart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"barChart\"></ax-chart-legend>\n </div>\n }\n @case ('doughnut') {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-donut-chart #donutChart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"donutChart\"></ax-chart-legend>\n </div>\n }\n @default {\n <div\n class=\"__chart-content ax-flex-1 ax-h-full ax-min-h-[250px] md:ax-min-h-[300px] ax-flex ax-items-center ax-justify-center ax-w-full ax-overflow-hidden\"\n >\n <ax-line-chart #lineChart [data]=\"lineChartData()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <div class=\"__chart-legend ax-w-fit ax-flex-shrink-0\">\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"lineChart\"></ax-chart-legend>\n </div>\n }\n }\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <footer class=\"__chart-footer ax-p-4 md:ax-p-6 ax-border-t\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </footer>\n }\n </section>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-gap-6 ax-p-8\">\n <div class=\"__no-config-icon ax-w-16 ax-h-16 ax-rounded-full ax-flex ax-items-center ax-justify-center\">\n <i class=\"fa-light fa-chart-line ax-text-2xl ax-opacity-60\"></i>\n </div>\n <div class=\"__no-config-content ax-max-w-lg ax-text-center\">\n <h4 class=\"__no-config-title ax-text-xl ax-font-semibold ax-mb-3\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description ax-opacity-70 ax-leading-relaxed\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</ng-container>\n" }]
1819
+ }] });
1820
+
1687
1821
  class AXPReportTableViewComponent {
1688
1822
  constructor() {
1689
1823
  //#region ---- Dependencies ----
@@ -1788,7 +1922,7 @@ class AXPReportTableViewComponent {
1788
1922
  };
1789
1923
  }
1790
1924
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportTableViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1791
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportTableViewComponent, isStandalone: true, selector: "axp-report-table-view", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$1.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1$1.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i1$1.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$1.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i2.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1925
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportTableViewComponent, isStandalone: true, selector: "axp-report-table-view", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$3.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$3.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1$3.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i1$3.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$3.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i2.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1792
1926
  }
1793
1927
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{
1794
1928
  type: Component,
@@ -1802,127 +1936,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1802
1936
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-data-table\n #grid\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n (onRowDbClick)=\"handleDbRowClick($event)\"\n class=\"ax-flex-1\"\n>\n <!-- Dynamic columns based on configuration -->\n <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"true\"></ax-index-column>\n @if (vm.canSelectRows()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (column of columns(); track column.field) {\n @if (column.visible) {\n <axp-widget-column-renderer\n [customWidth]=\"column.width + 'px'\"\n [caption]=\"(column.title | translate | async)!\"\n [node]=\"column.widget!\"\n ></axp-widget-column-renderer>\n }\n }\n @if (hasPrimaryRowAction()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"'100px'\"\n [items]=\"primaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-command-column>\n }\n @if (hasSecondaryRowAction()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"secondaryRowAction()\"\n (onItemClick)=\"handleRowClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n" }]
1803
1937
  }] });
1804
1938
 
1805
- class AXPReportChartViewComponent {
1806
- constructor() {
1807
- //#region ---- Dependencies ----
1808
- this.vm = inject(AXPReportViewerViewModel);
1809
- this.AXPPageStatus = AXPPageStatus;
1810
- //#endregion
1811
- //#region ---- Computed Properties ----
1812
- /**
1813
- * Current chart layout configuration
1814
- */
1815
- this.chartLayout = computed(() => {
1816
- const layout = this.vm.currentLayout();
1817
- return layout?.layout.type === 'chart'
1818
- ? layout.layout
1819
- : null;
1820
- }, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
1821
- /**
1822
- * Chart configuration options
1823
- */
1824
- this.chartOptions = computed(() => {
1825
- const chartLayout = this.chartLayout();
1826
- return chartLayout?.options || null;
1827
- }, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
1828
- /**
1829
- * Chart type for rendering
1830
- */
1831
- this.chartType = computed(() => {
1832
- const options = this.chartOptions();
1833
- return options?.chartType || 'bar';
1834
- }, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
1835
- /**
1836
- * Data mapping configuration
1837
- */
1838
- this.dataMapping = computed(() => {
1839
- const options = this.chartOptions();
1840
- return options?.dataMapping || null;
1841
- }, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
1842
- //#endregion
1843
- //#region ---- Effects ----
1844
- /**
1845
- * Effect to handle data fetching when chart configuration changes
1846
- */
1847
- this.#fetchData = effect(() => {
1848
- if (this.vm.allowFetchData() && this.chartOptions()) {
1849
- // TODO: Implement chart data fetching
1850
- console.log('Chart data fetch triggered', {
1851
- chartType: this.chartType(),
1852
- dataMapping: this.dataMapping()
1853
- });
1854
- this.vm.fetchData().then((data) => {
1855
- const donutChartData = AXPieChartReportMapper((data?.data).data ?? {});
1856
- this.donutChartData.set(donutChartData);
1857
- console.log('donutChartData', donutChartData);
1858
- });
1859
- }
1860
- }, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
1861
- this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: "donutChartData" }] : []));
1862
- this.donutChartOptions = signal({
1863
- totalLabel: 'Total',
1864
- showTooltip: true
1865
- }, ...(ngDevMode ? [{ debugName: "donutChartOptions" }] : []));
1866
- this.legendOptions = signal({
1867
- mode: 'horizontal',
1868
- }, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
1869
- }
1870
- //#endregion
1871
- //#region ---- Effects ----
1872
- /**
1873
- * Effect to handle data fetching when chart configuration changes
1874
- */
1875
- #fetchData;
1876
- //#endregion
1877
- //#region ---- Event Handlers ----
1878
- /**
1879
- * Handle chart click events
1880
- */
1881
- handleChartClick(event) {
1882
- // TODO: Implement chart click handling
1883
- console.log('Chart clicked:', event);
1884
- }
1885
- /**
1886
- * Handle chart data point selection
1887
- */
1888
- handleDataPointSelect(event) {
1889
- // TODO: Implement data point selection
1890
- console.log('Data point selected:', event);
1891
- }
1892
- //#endregion
1893
- //#region ---- Helper Methods ----
1894
- /**
1895
- * Check if chart is ready to render
1896
- */
1897
- isChartReady() {
1898
- return !!(this.chartOptions() && this.dataMapping());
1899
- }
1900
- /**
1901
- * Get chart configuration for rendering
1902
- */
1903
- getChartConfig() {
1904
- // TODO: Transform AXPReportChartOptions to chart library format
1905
- return {
1906
- type: this.chartType(),
1907
- options: this.chartOptions(),
1908
- dataMapping: this.dataMapping()
1909
- };
1910
- }
1911
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1912
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportChartViewComponent, isStandalone: true, selector: "axp-report-chart-view", ngImport: i0, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-donut-chart #chart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <!-- Legend Area -->\n @if (donutChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1913
- }
1914
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{
1915
- type: Component,
1916
- args: [{ selector: 'axp-report-chart-view', standalone: true, imports: [
1917
- CommonModule,
1918
- AXDecoratorModule,
1919
- AXTranslationModule,
1920
- AXPLayoutBuilderModule,
1921
- AXDonutChartComponent,
1922
- AXChartLegendComponent
1923
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-donut-chart #chart [data]=\"donutChartData()\" [options]=\"donutChartOptions()\"></ax-donut-chart>\n </div>\n <!-- Legend Area -->\n @if (donutChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"] }]
1924
- }] });
1925
-
1926
1939
  class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1927
1940
  constructor() {
1928
1941
  super(...arguments);
@@ -1930,7 +1943,6 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1930
1943
  this.layoutService = inject(AXPLayoutThemeService);
1931
1944
  this.route = inject(ActivatedRoute);
1932
1945
  this.router = inject(Router);
1933
- this.reportDefinitionService = inject(AXPReportDefinitionService);
1934
1946
  this.unsubscriber = inject(AXUnsubscriber);
1935
1947
  //#endregion
1936
1948
  //#region ---- Inputs ----
@@ -1952,16 +1964,16 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1952
1964
  positions: {
1953
1965
  default: { colSpan: 12 },
1954
1966
  md: { colSpan: 6 },
1955
- lg: { colSpan: 12 }
1956
- }
1967
+ lg: { colSpan: 12 },
1968
+ },
1957
1969
  });
1958
1970
  this.compactLayout = () => ({
1959
1971
  positions: {
1960
1972
  default: { colSpan: 12 },
1961
1973
  sm: { colSpan: 6 },
1962
1974
  md: { colSpan: 4 },
1963
- lg: { colSpan: 3 }
1964
- }
1975
+ lg: { colSpan: 3 },
1976
+ },
1965
1977
  });
1966
1978
  }
1967
1979
  //#endregion
@@ -1970,14 +1982,15 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1970
1982
  await super.ngOnInit();
1971
1983
  // Subscribe to route parameter changes for dynamic report loading
1972
1984
  this.unsubscriber.takeUntilDestroy(this.route.paramMap).subscribe(async (params) => {
1973
- const reportId = params.get('reportId') ||
1974
- this.route.snapshot.queryParamMap.get('reportId') ||
1975
- this.reportId();
1985
+ const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();
1976
1986
  if (reportId) {
1977
1987
  await this.loadReportAndRefresh(reportId);
1978
1988
  }
1979
1989
  });
1980
1990
  }
1991
+ /**
1992
+ * Effect to handle data fetching when chart configuration changes
1993
+ */
1981
1994
  //#endregion
1982
1995
  //#region ---- Helper Methods ----
1983
1996
  async loadReportAndRefresh(reportId) {
@@ -2035,7 +2048,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2035
2048
  command: {
2036
2049
  name: 'navigate-to-reports',
2037
2050
  },
2038
- }
2051
+ },
2039
2052
  ];
2040
2053
  // Add categories path
2041
2054
  const categoriesPath = this.vm.categoriesPath();
@@ -2049,7 +2062,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2049
2062
  command: {
2050
2063
  name: 'navigate-to-category',
2051
2064
  options: {
2052
- path: [...urlParts]
2065
+ path: [...urlParts],
2053
2066
  },
2054
2067
  },
2055
2068
  });
@@ -2173,9 +2186,9 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2173
2186
  provide: AXPPageLayoutBase,
2174
2187
  useExisting: AXPReportViewerPageComponent,
2175
2188
  },
2176
- ], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form #filtersForm [formDefinition]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\" [layoutStyle]=\"'compact'\" (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button [class.ax-sm]=\"layoutService.isSmall()\" class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.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: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type:
2177
- //
2178
- AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { 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: 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: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer, axp-layout-page-footer" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2189
+ ], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form\n #filtersForm\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\"\n [layoutStyle]=\"'compact'\"\n (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\"\n [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item\n [text]=\"layout.title\"\n [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\"\n >\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button\n look=\"outline\"\n color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.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: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type:
2190
+ //
2191
+ AXPDynamicFormComponent, selector: "axp-dynamic-form", inputs: ["formDefinition", "context", "layoutStyle", "layoutConfig"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { 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: 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: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer, axp-layout-page-footer" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2179
2192
  }
2180
2193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{
2181
2194
  type: Component,
@@ -2187,15 +2200,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2187
2200
  AXTranslationModule,
2188
2201
  AXDropdownButtonModule,
2189
2202
  AXDropdownModule,
2190
- //
2203
+ //
2191
2204
  AXPDynamicFormComponent,
2192
2205
  AXPPageLayoutComponent,
2193
2206
  AXPThemeLayoutStartSideComponent,
2194
2207
  AXPThemeLayoutHeaderComponent,
2195
2208
  AXPThemeLayoutBlockComponent,
2196
2209
  AXPReportTableViewComponent,
2210
+ AXPThemeLayoutFooterComponent,
2197
2211
  AXPReportChartViewComponent,
2198
- AXPThemeLayoutFooterComponent
2199
2212
  ], providers: [
2200
2213
  AXUnsubscriber,
2201
2214
  AXPReportViewerViewModel,
@@ -2203,7 +2216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2203
2216
  provide: AXPPageLayoutBase,
2204
2217
  useExisting: AXPReportViewerPageComponent,
2205
2218
  },
2206
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form #filtersForm [formDefinition]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\" [layoutStyle]=\"'compact'\" (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button [class.ax-sm]=\"layoutService.isSmall()\" class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"] }]
2219
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-dynamic-form\n #filtersForm\n [formDefinition]=\"vm.formDefinition()\"\n [context]=\"vm.filterContext()\"\n [layoutConfig]=\"defaultLayout()\"\n [layoutStyle]=\"'compact'\"\n (contextChange)=\"handleFiltersChange($event)\"\n (contextInitiated)=\"handleFiltersInitiated($event)\"\n >\n </axp-dynamic-form>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\">\n <ax-button\n [class.ax-sm]=\"layoutService.isSmall()\"\n class=\"ax-w-full\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\"\n [color]=\"'primary'\"\n (onClick)=\"execute({ name: 'execute-report' })\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item\n [text]=\"layout.title\"\n [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\"\n >\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (!vm.reportDefinition()) {\n <ng-container *ngTemplateOutlet=\"noReport\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>\n\n<!-- No Report Selected State -->\n<ng-template #noReport>\n <div class=\"__no-report\" *translate=\"let t\">\n <div class=\"__no-report-icon\">\n <ax-icon class=\"fa-light fa-chart-line\"></ax-icon>\n </div>\n <div class=\"__no-report-content\">\n <h3 class=\"__no-report-title\">\n {{ t('@report-management:features.report-viewer.no-report.title') | async }}\n </h3>\n <p class=\"__no-report-description\">\n {{ t('@report-management:features.report-viewer.no-report.description') | async }}\n </p>\n <div class=\"__no-report-actions\">\n <ax-button\n look=\"outline\"\n color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections{gap:0px!important}.axp-report-viewer-page axp-layout-start-side axp-layout-content .__filters-container axp-layout-sections axp-layout-section{border-style:none!important;padding:0!important;--tw-shadow: 0 0 #0000 !important;--tw-shadow-colored: 0 0 #0000 !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page .__no-report{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.axp-report-viewer-page .__no-report .__no-report-icon{margin-bottom:1rem;font-size:3.75rem;line-height:1;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1));opacity:.5}.axp-report-viewer-page .__no-report .__no-report-content{max-width:28rem}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-description{margin-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.75}.axp-report-viewer-page .__no-report .__no-report-content .__no-report-actions{display:flex;justify-content:center}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"] }]
2207
2220
  }] });
2208
2221
 
2209
2222
  var reportViewerPage_component = /*#__PURE__*/Object.freeze({
@@ -2211,9 +2224,125 @@ var reportViewerPage_component = /*#__PURE__*/Object.freeze({
2211
2224
  AXPReportViewerPageComponent: AXPReportViewerPageComponent
2212
2225
  });
2213
2226
 
2227
+ class AXPReportBarChartViewComponent {
2228
+ constructor() {
2229
+ //#region ---- Dependencies ----
2230
+ this.vm = inject(AXPReportViewerViewModel);
2231
+ this.AXPPageStatus = AXPPageStatus;
2232
+ //#endregion
2233
+ //#region ---- Computed Properties ----
2234
+ /**
2235
+ * Current chart layout configuration
2236
+ */
2237
+ this.chartLayout = computed(() => {
2238
+ const layout = this.vm.currentLayout();
2239
+ return layout?.layout.type === 'chart' ? layout.layout : null;
2240
+ }, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
2241
+ /**
2242
+ * Chart configuration options
2243
+ */
2244
+ this.chartOptions = computed(() => {
2245
+ const chartLayout = this.chartLayout();
2246
+ return chartLayout?.options || null;
2247
+ }, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
2248
+ /**
2249
+ * Chart type for rendering
2250
+ */
2251
+ this.chartType = computed(() => {
2252
+ const options = this.chartOptions();
2253
+ return options?.chartType || 'bar';
2254
+ }, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
2255
+ /**
2256
+ * Data mapping configuration
2257
+ */
2258
+ this.dataMapping = computed(() => {
2259
+ const options = this.chartOptions();
2260
+ return options?.dataMapping || null;
2261
+ }, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
2262
+ //#endregion
2263
+ //#region ---- Effects ----
2264
+ /**
2265
+ * Effect to handle data fetching when chart configuration changes
2266
+ */
2267
+ this.#fetchData = effect(() => {
2268
+ if (this.vm.allowFetchData() && this.chartOptions()) {
2269
+ // TODO: Implement chart data fetching
2270
+ console.log('Chart data fetch triggered', {
2271
+ chartType: this.chartType(),
2272
+ dataMapping: this.dataMapping(),
2273
+ });
2274
+ this.vm.fetchData().then((data) => {
2275
+ const barChartData = AXBarChartReportMapper((data?.data).data ?? {});
2276
+ this.barChartData.set(barChartData);
2277
+ console.log('barChartData', barChartData);
2278
+ });
2279
+ }
2280
+ }, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
2281
+ this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
2282
+ this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
2283
+ this.legendOptions = signal({
2284
+ mode: 'horizontal',
2285
+ }, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
2286
+ }
2287
+ //#endregion
2288
+ //#region ---- Effects ----
2289
+ /**
2290
+ * Effect to handle data fetching when chart configuration changes
2291
+ */
2292
+ #fetchData;
2293
+ //#endregion
2294
+ //#region ---- Event Handlers ----
2295
+ /**
2296
+ * Handle chart click events
2297
+ */
2298
+ handleChartClick(event) {
2299
+ // TODO: Implement chart click handling
2300
+ console.log('Chart clicked:', event);
2301
+ }
2302
+ /**
2303
+ * Handle chart data point selection
2304
+ */
2305
+ handleDataPointSelect(event) {
2306
+ // TODO: Implement data point selection
2307
+ console.log('Data point selected:', event);
2308
+ }
2309
+ //#endregion
2310
+ //#region ---- Helper Methods ----
2311
+ /**
2312
+ * Check if chart is ready to render
2313
+ */
2314
+ isChartReady() {
2315
+ return !!(this.chartOptions() && this.dataMapping());
2316
+ }
2317
+ /**
2318
+ * Get chart configuration for rendering
2319
+ */
2320
+ getChartConfig() {
2321
+ // TODO: Transform AXPReportChartOptions to chart library format
2322
+ return {
2323
+ type: this.chartType(),
2324
+ options: this.chartOptions(),
2325
+ dataMapping: this.dataMapping(),
2326
+ };
2327
+ }
2328
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2329
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPReportBarChartViewComponent, isStandalone: true, selector: "axp-report-bar-chart-view", ngImport: i0, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-bar-chart #chart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <!-- Legend Area -->\n @if (barChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2330
+ }
2331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{
2332
+ type: Component,
2333
+ args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [
2334
+ CommonModule,
2335
+ AXDecoratorModule,
2336
+ AXTranslationModule,
2337
+ AXPLayoutBuilderModule,
2338
+ AXBarChartComponent,
2339
+ AXChartLegendComponent,
2340
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"axp-report-chart-view\" *translate=\"let t\">\n @if (vm.status() === AXPPageStatus.Processing) {\n <!-- Loading State -->\n <div class=\"__loading\">\n <div\n class=\"ax-spinner ax-spin ax-border-4 ax-border-gray-200 ax-border-t-primary ax-rounded-full ax-w-12 ax-h-12\"\n ></div>\n <div class=\"__loading-text\">\n {{ t('@report-management:features.report-viewer.loading.chart') | async }}\n </div>\n </div>\n } @else if (vm.status() === AXPPageStatus.Error) {\n <!-- Error State -->\n <div class=\"__error\">\n <div class=\"__error-icon\">\n <i class=\"fa-light fa-exclamation-triangle\"></i>\n </div>\n <div class=\"__error-content\">\n <h4 class=\"__error-title\">\n {{ t('@report-management:features.report-viewer.error.title') | async }}\n </h4>\n <p class=\"__error-description\">\n {{ vm.error() || t('@report-management:features.report-viewer.error.generic') | async }}\n </p>\n </div>\n </div>\n } @else if (isChartReady()) {\n <!-- Chart Content -->\n <div class=\"__chart-container\">\n @if (chartLayout()?.header) {\n <div class=\"__chart-header\">\n <h3 class=\"__chart-title\">{{ chartLayout()?.header?.title }}</h3>\n @if (chartLayout()?.header?.showDate) {\n <div class=\"__chart-date\">{{ 'common.date.today' | translate | async }}</div>\n }\n </div>\n }\n\n <div class=\"__chart-body\">\n <!-- Chart component will be rendered here -->\n <div class=\"__chart-placeholder\">\n <div class=\"__placeholder-content\">\n <div\n class=\"ax-flex ax-flex-wrap ax-items-center ax-justify-center ax-gap-10\"\n [class]=\"legendOptions().mode === 'horizontal' ? 'ax-flex-col' : 'ax-flex-row'\"\n >\n <!-- Chart Area -->\n <div class=\"ax-flex-0 ax-size-96\">\n <ax-bar-chart #chart [data]=\"barChartData()\" [options]=\"barChartOptions()\"></ax-bar-chart>\n </div>\n <!-- Legend Area -->\n @if (barChartData().length > 0) {\n <div>\n <ax-chart-legend [options]=\"legendOptions()\" [chart]=\"chart\"></ax-chart-legend>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n\n @if (chartLayout()?.footer) {\n <div class=\"__chart-footer\">\n @if (chartLayout()?.footer?.customHtml) {\n <div [innerHTML]=\"chartLayout()?.footer?.customHtml\"></div>\n }\n </div>\n }\n </div>\n } @else {\n <!-- No Configuration State -->\n <div class=\"__no-config\">\n <div class=\"__no-config-icon\">\n <i class=\"fa-light fa-chart-line\"></i>\n </div>\n <div class=\"__no-config-content\">\n <h4 class=\"__no-config-title\">\n {{ t('@report-management:features.report-viewer.chart.no-config.title') | async }}\n </h4>\n <p class=\"__no-config-description\">\n {{ t('@report-management:features.report-viewer.chart.no-config.description') | async }}\n </p>\n </div>\n </div>\n }\n</div>\n", styles: [".axp-report-chart-view{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__loading{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.axp-report-chart-view .__loading .__loading-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-chart-view .__chart-container .__chart-header{border-bottom-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem}.axp-report-chart-view .__chart-container .__chart-header .__chart-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-header .__chart-date{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body{flex:1 1 0%;overflow:hidden}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;text-align:center}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-icon{font-size:3.75rem;line-height:1;color:rgba(var(--ax-sys-color-primary-500),.2)}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content{max-width:28rem}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-title{margin-bottom:.5rem;font-size:1.25rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__chart-container .__chart-body .__chart-placeholder .__placeholder-content .__placeholder-description{margin-bottom:1rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__chart-container .__chart-body .__chart-content{height:100%;width:100%}.axp-report-chart-view .__chart-container .__chart-footer{border-top-width:1px;--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1));padding:1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__error .__error-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content{max-width:28rem}.axp-report-chart-view .__error .__error-content .__error-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__error .__error-content .__error-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config{display:flex;height:100%;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.axp-report-chart-view .__no-config .__no-config-icon{font-size:2.25rem;line-height:2.5rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.axp-report-chart-view .__no-config .__no-config-content{max-width:28rem}.axp-report-chart-view .__no-config .__no-config-content .__no-config-title{margin-bottom:.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-report-chart-view .__no-config .__no-config-content .__no-config-description{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}\n"] }]
2341
+ }] });
2342
+
2214
2343
  /**
2215
2344
  * Generated bundle index. Do not edit.
2216
2345
  */
2217
2346
 
2218
- export { AXMReportManagementModule, AXPBarChartReportMapper, AXPReportChartViewComponent, AXPReportDefinitionService, AXPReportTableViewComponent, AXPReportViewerPageComponent, AXPReportViewerViewModel, AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, AXPieChartReportMapper, RootConfig };
2347
+ export { AXBarChartReportMapper, AXLineChartReportMapper, AXMReportManagementModule, AXPReportBarChartViewComponent, AXPReportDefinitionService, AXPReportTableViewComponent, AXPReportViewerPageComponent, AXPReportViewerViewModel, AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, AXPieChartReportMapper, RootConfig };
2219
2348
  //# sourceMappingURL=acorex-modules-report-management.mjs.map