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

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 (192) hide show
  1. package/common/index.d.ts +19 -1
  2. package/conversation/index.d.ts +1 -0
  3. package/customer-management/index.d.ts +167 -0
  4. package/document-management/index.d.ts +99 -13
  5. package/fesm2022/acorex-modules-application-management.mjs +24 -214
  6. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  7. package/fesm2022/acorex-modules-common.mjs +2695 -1288
  8. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  9. package/fesm2022/acorex-modules-conversation.mjs +46 -29
  10. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  11. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs +700 -0
  12. package/fesm2022/acorex-modules-customer-management-acorex-modules-customer-management-DZBixdOT.mjs.map +1 -0
  13. package/fesm2022/acorex-modules-customer-management-activity.entity-By32mnXN.mjs +98 -0
  14. package/fesm2022/acorex-modules-customer-management-activity.entity-By32mnXN.mjs.map +1 -0
  15. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs +83 -0
  16. package/fesm2022/acorex-modules-customer-management-customer-segment.entity-CjFYqTMc.mjs.map +1 -0
  17. package/fesm2022/acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs +95 -0
  18. package/fesm2022/acorex-modules-customer-management-customer-type.entity-Bk_Ng_DS.mjs.map +1 -0
  19. package/fesm2022/acorex-modules-customer-management-customer.entity-rUNC9glL.mjs +338 -0
  20. package/fesm2022/acorex-modules-customer-management-customer.entity-rUNC9glL.mjs.map +1 -0
  21. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs +147 -0
  22. package/fesm2022/acorex-modules-customer-management-deal-contact-role.entity-BWX44lzi.mjs.map +1 -0
  23. package/fesm2022/acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs +97 -0
  24. package/fesm2022/acorex-modules-customer-management-lead.entity-B3gv0YnT.mjs.map +1 -0
  25. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs +72 -0
  26. package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-cs1hb_Ro.mjs.map +1 -0
  27. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs +72 -0
  28. package/fesm2022/acorex-modules-customer-management-opportunity-stage.entity-C-opdmDW.mjs.map +1 -0
  29. package/fesm2022/acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs +188 -0
  30. package/fesm2022/acorex-modules-customer-management-opportunity.entity-D5n_4xgK.mjs.map +1 -0
  31. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs +72 -0
  32. package/fesm2022/acorex-modules-customer-management-sales-pipeline.entity-AeLhcil2.mjs.map +1 -0
  33. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs +72 -0
  34. package/fesm2022/acorex-modules-customer-management-sales-territory.entity-uK9N7p_k.mjs.map +1 -0
  35. package/fesm2022/acorex-modules-customer-management.mjs +2 -0
  36. package/fesm2022/acorex-modules-customer-management.mjs.map +1 -0
  37. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs → acorex-modules-document-management-acorex-modules-document-management-BraIQGrY.mjs} +1439 -429
  38. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BraIQGrY.mjs.map +1 -0
  39. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs → acorex-modules-document-management-attachment-widget.component-Dp1ioMjR.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-tk2f6GPy.mjs.map → acorex-modules-document-management-attachment-widget.component-Dp1ioMjR.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs → acorex-modules-document-management-create-folder-dialog.component-C1Lvxwwf.mjs} +4 -4
  42. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DJ-BBmR2.mjs.map → acorex-modules-document-management-create-folder-dialog.component-C1Lvxwwf.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs → acorex-modules-document-management-details-view.component-C7x2n-uL.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-document-management-details-view.component-CX10ubfL.mjs.map → acorex-modules-document-management-details-view.component-C7x2n-uL.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs → acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs} +4 -4
  46. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-BFL8zeml.mjs.map +1 -0
  47. 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
  48. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CoymgoD7.mjs.map +1 -0
  49. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs → acorex-modules-document-management-document-signature-popup.component-DJMLGeBo.mjs} +4 -4
  50. package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-CMUZSL2S.mjs.map → acorex-modules-document-management-document-signature-popup.component-DJMLGeBo.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs → acorex-modules-document-management-drive-choose.component-BiApSZ5Z.mjs} +4 -4
  52. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DOxdrJh-.mjs.map → acorex-modules-document-management-drive-choose.component-BiApSZ5Z.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs → acorex-modules-document-management-drive.component-C3LZf1EE.mjs} +5 -5
  54. package/fesm2022/{acorex-modules-document-management-drive.component-Crt-i9Xe.mjs.map → acorex-modules-document-management-drive.component-C3LZf1EE.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs → acorex-modules-document-management-large-icons-view.component-CUox2dHw.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DLds0iA6.mjs.map → acorex-modules-document-management-large-icons-view.component-CUox2dHw.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs → acorex-modules-document-management-large-tiles-view.component-CPaqX_Gj.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-DELo5m5s.mjs.map → acorex-modules-document-management-large-tiles-view.component-CPaqX_Gj.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs → acorex-modules-document-management-list-view.component-DHR1nZii.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-list-view.component-DsR96OWz.mjs.map → acorex-modules-document-management-list-view.component-DHR1nZii.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BbPbZmkc.mjs → acorex-modules-document-management-meta-choose-popup.component-DXTdVhrh.mjs} +3 -3
  62. 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
  63. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs → acorex-modules-document-management-permission-definition.provider-SLETM1r-.mjs} +2 -2
  64. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DiXt_BzX.mjs.map → acorex-modules-document-management-permission-definition.provider-SLETM1r-.mjs.map} +1 -1
  65. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs → acorex-modules-document-management-rename-node-dialog.component-CLkMT7A9.mjs} +4 -4
  66. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-CNeHhc0E.mjs.map → acorex-modules-document-management-rename-node-dialog.component-CLkMT7A9.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs → acorex-modules-document-management-small-icons-view.component-DFxM61cD.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-D9AIIBMz.mjs.map → acorex-modules-document-management-small-icons-view.component-DFxM61cD.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs → acorex-modules-document-management-small-tiles-view.component-DhzxwNEY.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-HpEgcH1F.mjs.map → acorex-modules-document-management-small-tiles-view.component-DhzxwNEY.mjs.map} +1 -1
  71. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  72. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-BhU14Qou.mjs} +9 -9
  73. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-BhU14Qou.mjs.map +1 -0
  74. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs → acorex-modules-form-template-management-permission-definition.provider-D4lGFRCA.mjs} +2 -2
  75. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BEkbbQH2.mjs.map → acorex-modules-form-template-management-permission-definition.provider-D4lGFRCA.mjs.map} +1 -1
  76. package/fesm2022/{acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs → acorex-modules-form-template-management-settings.provider-499Y4rLb.mjs} +2 -2
  77. package/fesm2022/{acorex-modules-form-template-management-settings.provider-DSI7cmrW.mjs.map → acorex-modules-form-template-management-settings.provider-499Y4rLb.mjs.map} +1 -1
  78. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs → acorex-modules-form-template-management-template-picker.component-2EkzMuIy.mjs} +2 -2
  79. package/fesm2022/acorex-modules-form-template-management-template-picker.component-2EkzMuIy.mjs.map +1 -0
  80. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs → acorex-modules-form-template-management-template-widget-edit.component-DwgbgFrf.mjs} +2 -2
  81. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-DwgbgFrf.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs → acorex-modules-form-template-management-template.entity-D_14HgMr.mjs} +85 -87
  83. package/fesm2022/acorex-modules-form-template-management-template.entity-D_14HgMr.mjs.map +1 -0
  84. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs → acorex-modules-form-template-management-viewer-popup.component-BLgx_xby.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-C8TC42DL.mjs.map → acorex-modules-form-template-management-viewer-popup.component-BLgx_xby.mjs.map} +1 -1
  86. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  87. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs → acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs} +19 -79
  88. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-BvDYd3fI.mjs.map +1 -0
  89. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs → acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs} +4 -4
  90. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-ae64BzbL.mjs.map → acorex-modules-help-desk-capture-screen.component-DH_FG8iE.mjs.map} +1 -1
  91. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  92. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-1PmjMC7i.mjs +444 -0
  93. package/fesm2022/acorex-modules-human-capital-management-acorex-modules-human-capital-management-1PmjMC7i.mjs.map +1 -0
  94. package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DyOHJWW_.mjs +153 -0
  95. package/fesm2022/acorex-modules-human-capital-management-employee-skill.entity-DyOHJWW_.mjs.map +1 -0
  96. package/fesm2022/acorex-modules-human-capital-management-employee.entity-5J-FoLiT.mjs +160 -0
  97. package/fesm2022/acorex-modules-human-capital-management-employee.entity-5J-FoLiT.mjs.map +1 -0
  98. package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-DFpRtSOh.mjs +97 -0
  99. package/fesm2022/acorex-modules-human-capital-management-employment-type.entity-DFpRtSOh.mjs.map +1 -0
  100. package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DuNvJq-k.mjs +196 -0
  101. package/fesm2022/acorex-modules-human-capital-management-position-assignment.entity-DuNvJq-k.mjs.map +1 -0
  102. package/fesm2022/acorex-modules-human-capital-management-settings.provider-rRaBaVeh.mjs +17 -0
  103. package/fesm2022/acorex-modules-human-capital-management-settings.provider-rRaBaVeh.mjs.map +1 -0
  104. package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-0ZzRent7.mjs +52 -0
  105. package/fesm2022/acorex-modules-human-capital-management-skill-level.entity-0ZzRent7.mjs.map +1 -0
  106. package/fesm2022/acorex-modules-human-capital-management-skill.entity-Dd7p11vj.mjs +82 -0
  107. package/fesm2022/acorex-modules-human-capital-management-skill.entity-Dd7p11vj.mjs.map +1 -0
  108. package/fesm2022/acorex-modules-human-capital-management.mjs +2 -0
  109. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -0
  110. package/fesm2022/acorex-modules-identifier-management.mjs +2 -1
  111. package/fesm2022/acorex-modules-identifier-management.mjs.map +1 -1
  112. package/fesm2022/acorex-modules-log-management.mjs +282 -31
  113. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  114. 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
  115. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-BKZy7M-X.mjs.map +1 -0
  116. package/fesm2022/acorex-modules-meeting-management.mjs +33 -7
  117. package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
  118. package/fesm2022/{acorex-modules-organization-management-role.entity-BdjgFsgo.mjs → acorex-modules-organization-management-branch.entity-bajoE99c.mjs} +106 -43
  119. package/fesm2022/acorex-modules-organization-management-branch.entity-bajoE99c.mjs.map +1 -0
  120. package/fesm2022/{acorex-modules-organization-management-skill.entity-O1453j6I.mjs → acorex-modules-organization-management-department.entity-BkEbajpN.mjs} +94 -41
  121. package/fesm2022/acorex-modules-organization-management-department.entity-BkEbajpN.mjs.map +1 -0
  122. package/fesm2022/{acorex-modules-organization-management-division.entity-DdX7LcCU.mjs → acorex-modules-organization-management-division.entity-Cds8jkR5.mjs} +165 -128
  123. package/fesm2022/acorex-modules-organization-management-division.entity-Cds8jkR5.mjs.map +1 -0
  124. package/fesm2022/{acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs → acorex-modules-organization-management-org-chart.page-5fHaWyGW.mjs} +5 -3
  125. package/fesm2022/acorex-modules-organization-management-org-chart.page-5fHaWyGW.mjs.map +1 -0
  126. package/fesm2022/{acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs → acorex-modules-organization-management-position.entity-DK-i78ck.mjs} +18 -7
  127. package/fesm2022/acorex-modules-organization-management-position.entity-DK-i78ck.mjs.map +1 -0
  128. package/fesm2022/{acorex-modules-organization-management-position.entity-DT7EyvrR.mjs → acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs} +11 -26
  129. package/fesm2022/acorex-modules-organization-management-role.entity-Cz8VrdMl.mjs.map +1 -0
  130. package/fesm2022/{acorex-modules-organization-management-team.entity-DkRLWl0u.mjs → acorex-modules-organization-management-team.entity-CNYXXHM7.mjs} +16 -14
  131. package/fesm2022/acorex-modules-organization-management-team.entity-CNYXXHM7.mjs.map +1 -0
  132. package/fesm2022/acorex-modules-organization-management.mjs +90 -425
  133. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  134. package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs → acorex-modules-party-management-acorex-modules-party-management-DJNXviBH.mjs} +43 -7
  135. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-DJNXviBH.mjs.map +1 -0
  136. package/fesm2022/acorex-modules-party-management-industry.entity-D01GclFe.mjs +91 -0
  137. package/fesm2022/acorex-modules-party-management-industry.entity-D01GclFe.mjs.map +1 -0
  138. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs → acorex-modules-party-management-party-identifier-type.entity-DoXx0nyF.mjs} +2 -2
  139. package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BYsWpup7.mjs.map → acorex-modules-party-management-party-identifier-type.entity-DoXx0nyF.mjs.map} +1 -1
  140. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs → acorex-modules-party-management-party-identifier.entity-_tLoTcUC.mjs} +2 -2
  141. package/fesm2022/{acorex-modules-party-management-party-identifier.entity-DSn4lsX-.mjs.map → acorex-modules-party-management-party-identifier.entity-_tLoTcUC.mjs.map} +1 -1
  142. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs → acorex-modules-party-management-party-relationship.entity-B-hI_r6b.mjs} +2 -2
  143. package/fesm2022/{acorex-modules-party-management-party-relationship.entity-BG5zuKPH.mjs.map → acorex-modules-party-management-party-relationship.entity-B-hI_r6b.mjs.map} +1 -1
  144. package/fesm2022/{acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs → acorex-modules-party-management-party-role.entity-Dxs6yXKd.mjs} +7 -3
  145. package/fesm2022/acorex-modules-party-management-party-role.entity-Dxs6yXKd.mjs.map +1 -0
  146. package/fesm2022/{acorex-modules-party-management-party.entity-BwAAZRJc.mjs → acorex-modules-party-management-party.entity-BFEy4rXT.mjs} +88 -25
  147. package/fesm2022/acorex-modules-party-management-party.entity-BFEy4rXT.mjs.map +1 -0
  148. package/fesm2022/acorex-modules-party-management.mjs +1 -1
  149. package/fesm2022/acorex-modules-project-management.mjs +1 -1
  150. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  151. package/fesm2022/acorex-modules-report-management.mjs +293 -160
  152. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  153. package/fesm2022/acorex-modules-security-management.mjs +32 -77
  154. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  155. package/fesm2022/{acorex-modules-task-management-task-board.page-BBbHu2jz.mjs → acorex-modules-task-management-task-board.page-zbl3g-sI.mjs} +67 -59
  156. package/fesm2022/acorex-modules-task-management-task-board.page-zbl3g-sI.mjs.map +1 -0
  157. package/fesm2022/acorex-modules-task-management.mjs +284 -152
  158. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  159. package/form-template-management/index.d.ts +1 -1
  160. package/human-capital-management/index.d.ts +97 -0
  161. package/identifier-management/index.d.ts +1 -1
  162. package/organization-management/index.d.ts +81 -159
  163. package/package.json +9 -1
  164. package/party-management/index.d.ts +7 -0
  165. package/report-management/index.d.ts +234 -231
  166. package/task-management/index.d.ts +3 -1
  167. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DG7QxbqI.mjs.map +0 -1
  168. package/fesm2022/acorex-modules-document-management-document-distribution-popup.component-DB4JJ3w7.mjs.map +0 -1
  169. package/fesm2022/acorex-modules-document-management-document-send-to-review-popup.component-CtpLvPIr.mjs.map +0 -1
  170. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-COVNekIY.mjs.map +0 -1
  171. package/fesm2022/acorex-modules-form-template-management-template-picker.component-5n_kQMuQ.mjs.map +0 -1
  172. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-BtCYeGB-.mjs.map +0 -1
  173. package/fesm2022/acorex-modules-form-template-management-template.entity-Cm-AVAF_.mjs.map +0 -1
  174. package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-hH3VgxdE.mjs.map +0 -1
  175. package/fesm2022/acorex-modules-meeting-management-meeting-publish-popup.component-PcBFprq3.mjs.map +0 -1
  176. package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs +0 -537
  177. package/fesm2022/acorex-modules-organization-management-branch.entity-B_CYwiX9.mjs.map +0 -1
  178. package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs +0 -481
  179. package/fesm2022/acorex-modules-organization-management-department.entity-BbBrK4BN.mjs.map +0 -1
  180. package/fesm2022/acorex-modules-organization-management-division.entity-DdX7LcCU.mjs.map +0 -1
  181. package/fesm2022/acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs +0 -670
  182. package/fesm2022/acorex-modules-organization-management-employee.entity-DJH02MJJ.mjs.map +0 -1
  183. package/fesm2022/acorex-modules-organization-management-employment-type.entity-Dw3TLMtD.mjs.map +0 -1
  184. package/fesm2022/acorex-modules-organization-management-org-chart.page-DxVm1V4w.mjs.map +0 -1
  185. package/fesm2022/acorex-modules-organization-management-position.entity-DT7EyvrR.mjs.map +0 -1
  186. package/fesm2022/acorex-modules-organization-management-role.entity-BdjgFsgo.mjs.map +0 -1
  187. package/fesm2022/acorex-modules-organization-management-skill.entity-O1453j6I.mjs.map +0 -1
  188. package/fesm2022/acorex-modules-organization-management-team.entity-DkRLWl0u.mjs.map +0 -1
  189. package/fesm2022/acorex-modules-party-management-acorex-modules-party-management-BFyD7IcC.mjs.map +0 -1
  190. package/fesm2022/acorex-modules-party-management-party-role.entity-jCTZL0mT.mjs.map +0 -1
  191. package/fesm2022/acorex-modules-party-management-party.entity-BwAAZRJc.mjs.map +0 -1
  192. 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() {
@@ -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,120 @@ 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
+ className: 'ax-h-72',
1779
+ }, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
1780
+ this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
1781
+ this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
1782
+ this.donutChartData = signal([], ...(ngDevMode ? [{ debugName: "donutChartData" }] : []));
1783
+ this.donutChartOptions = computed(() => {
1784
+ return {
1785
+ totalLabel: 'Total',
1786
+ showTooltip: true,
1787
+ showDataLabels: this.donutChartData().length <= 10,
1788
+ };
1789
+ }, ...(ngDevMode ? [{ debugName: "donutChartOptions" }] : []));
1790
+ this.lineChartData = signal([], ...(ngDevMode ? [{ debugName: "lineChartData" }] : []));
1791
+ this.lineChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "lineChartOptions" }] : []));
1792
+ }
1793
+ //#endregion
1794
+ //#region ---- Effects ----
1795
+ /**
1796
+ * Effect to fetch chart data when conditions are met
1797
+ */
1798
+ #fetchData;
1799
+ //#endregion
1800
+ //#region ---- Helper Methods ----
1801
+ /**
1802
+ * Check if chart is ready to render
1803
+ */
1804
+ isChartReady() {
1805
+ return !!(this.chartOptions() && this.dataMapping());
1806
+ }
1807
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1808
+ 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 @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 <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 class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\" [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 @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 <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 <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 <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>", 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 }); }
1809
+ }
1810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportChartViewComponent, decorators: [{
1811
+ type: Component,
1812
+ args: [{ selector: 'axp-report-chart-view', imports: [
1813
+ CommonModule,
1814
+ AXTranslationModule,
1815
+ AXPLayoutBuilderModule,
1816
+ AXBarChartComponent,
1817
+ AXDonutChartComponent,
1818
+ AXLineChartComponent,
1819
+ AXChartLegendComponent,
1820
+ ], host: {
1821
+ class: 'axp-report-chart-view ax-w-full ax-h-full ax-flex ax-flex-col',
1822
+ }, 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 @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 <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 class=\"__chart-wrapper ax-h-full ax-items-center ax-flex ax-flex-col ax-gap-4 lg:ax-gap-6\" [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 @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 <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 <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 <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>" }]
1823
+ }] });
1824
+
1687
1825
  class AXPReportTableViewComponent {
1688
1826
  constructor() {
1689
1827
  //#region ---- Dependencies ----
@@ -1788,7 +1926,7 @@ class AXPReportTableViewComponent {
1788
1926
  };
1789
1927
  }
1790
1928
  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 }); }
1929
+ 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
1930
  }
1793
1931
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportTableViewComponent, decorators: [{
1794
1932
  type: Component,
@@ -1802,127 +1940,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
1802
1940
  ], 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
1941
  }] });
1804
1942
 
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
1943
  class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1927
1944
  constructor() {
1928
1945
  super(...arguments);
@@ -1930,7 +1947,6 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1930
1947
  this.layoutService = inject(AXPLayoutThemeService);
1931
1948
  this.route = inject(ActivatedRoute);
1932
1949
  this.router = inject(Router);
1933
- this.reportDefinitionService = inject(AXPReportDefinitionService);
1934
1950
  this.unsubscriber = inject(AXUnsubscriber);
1935
1951
  //#endregion
1936
1952
  //#region ---- Inputs ----
@@ -1952,16 +1968,16 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1952
1968
  positions: {
1953
1969
  default: { colSpan: 12 },
1954
1970
  md: { colSpan: 6 },
1955
- lg: { colSpan: 12 }
1956
- }
1971
+ lg: { colSpan: 12 },
1972
+ },
1957
1973
  });
1958
1974
  this.compactLayout = () => ({
1959
1975
  positions: {
1960
1976
  default: { colSpan: 12 },
1961
1977
  sm: { colSpan: 6 },
1962
1978
  md: { colSpan: 4 },
1963
- lg: { colSpan: 3 }
1964
- }
1979
+ lg: { colSpan: 3 },
1980
+ },
1965
1981
  });
1966
1982
  }
1967
1983
  //#endregion
@@ -1970,14 +1986,15 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
1970
1986
  await super.ngOnInit();
1971
1987
  // Subscribe to route parameter changes for dynamic report loading
1972
1988
  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();
1989
+ const reportId = params.get('reportId') || this.route.snapshot.queryParamMap.get('reportId') || this.reportId();
1976
1990
  if (reportId) {
1977
1991
  await this.loadReportAndRefresh(reportId);
1978
1992
  }
1979
1993
  });
1980
1994
  }
1995
+ /**
1996
+ * Effect to handle data fetching when chart configuration changes
1997
+ */
1981
1998
  //#endregion
1982
1999
  //#region ---- Helper Methods ----
1983
2000
  async loadReportAndRefresh(reportId) {
@@ -2035,7 +2052,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2035
2052
  command: {
2036
2053
  name: 'navigate-to-reports',
2037
2054
  },
2038
- }
2055
+ },
2039
2056
  ];
2040
2057
  // Add categories path
2041
2058
  const categoriesPath = this.vm.categoriesPath();
@@ -2049,7 +2066,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2049
2066
  command: {
2050
2067
  name: 'navigate-to-category',
2051
2068
  options: {
2052
- path: [...urlParts]
2069
+ path: [...urlParts],
2053
2070
  },
2054
2071
  },
2055
2072
  });
@@ -2173,9 +2190,9 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
2173
2190
  provide: AXPPageLayoutBase,
2174
2191
  useExisting: AXPReportViewerPageComponent,
2175
2192
  },
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 }); }
2193
+ ], 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:
2194
+ //
2195
+ 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
2196
  }
2180
2197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportViewerPageComponent, decorators: [{
2181
2198
  type: Component,
@@ -2187,15 +2204,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2187
2204
  AXTranslationModule,
2188
2205
  AXDropdownButtonModule,
2189
2206
  AXDropdownModule,
2190
- //
2207
+ //
2191
2208
  AXPDynamicFormComponent,
2192
2209
  AXPPageLayoutComponent,
2193
2210
  AXPThemeLayoutStartSideComponent,
2194
2211
  AXPThemeLayoutHeaderComponent,
2195
2212
  AXPThemeLayoutBlockComponent,
2196
2213
  AXPReportTableViewComponent,
2214
+ AXPThemeLayoutFooterComponent,
2197
2215
  AXPReportChartViewComponent,
2198
- AXPThemeLayoutFooterComponent
2199
2216
  ], providers: [
2200
2217
  AXUnsubscriber,
2201
2218
  AXPReportViewerViewModel,
@@ -2203,7 +2220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2203
2220
  provide: AXPPageLayoutBase,
2204
2221
  useExisting: AXPReportViewerPageComponent,
2205
2222
  },
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"] }]
2223
+ ], 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
2224
  }] });
2208
2225
 
2209
2226
  var reportViewerPage_component = /*#__PURE__*/Object.freeze({
@@ -2211,9 +2228,125 @@ var reportViewerPage_component = /*#__PURE__*/Object.freeze({
2211
2228
  AXPReportViewerPageComponent: AXPReportViewerPageComponent
2212
2229
  });
2213
2230
 
2231
+ class AXPReportBarChartViewComponent {
2232
+ constructor() {
2233
+ //#region ---- Dependencies ----
2234
+ this.vm = inject(AXPReportViewerViewModel);
2235
+ this.AXPPageStatus = AXPPageStatus;
2236
+ //#endregion
2237
+ //#region ---- Computed Properties ----
2238
+ /**
2239
+ * Current chart layout configuration
2240
+ */
2241
+ this.chartLayout = computed(() => {
2242
+ const layout = this.vm.currentLayout();
2243
+ return layout?.layout.type === 'chart' ? layout.layout : null;
2244
+ }, ...(ngDevMode ? [{ debugName: "chartLayout" }] : []));
2245
+ /**
2246
+ * Chart configuration options
2247
+ */
2248
+ this.chartOptions = computed(() => {
2249
+ const chartLayout = this.chartLayout();
2250
+ return chartLayout?.options || null;
2251
+ }, ...(ngDevMode ? [{ debugName: "chartOptions" }] : []));
2252
+ /**
2253
+ * Chart type for rendering
2254
+ */
2255
+ this.chartType = computed(() => {
2256
+ const options = this.chartOptions();
2257
+ return options?.chartType || 'bar';
2258
+ }, ...(ngDevMode ? [{ debugName: "chartType" }] : []));
2259
+ /**
2260
+ * Data mapping configuration
2261
+ */
2262
+ this.dataMapping = computed(() => {
2263
+ const options = this.chartOptions();
2264
+ return options?.dataMapping || null;
2265
+ }, ...(ngDevMode ? [{ debugName: "dataMapping" }] : []));
2266
+ //#endregion
2267
+ //#region ---- Effects ----
2268
+ /**
2269
+ * Effect to handle data fetching when chart configuration changes
2270
+ */
2271
+ this.#fetchData = effect(() => {
2272
+ if (this.vm.allowFetchData() && this.chartOptions()) {
2273
+ // TODO: Implement chart data fetching
2274
+ console.log('Chart data fetch triggered', {
2275
+ chartType: this.chartType(),
2276
+ dataMapping: this.dataMapping(),
2277
+ });
2278
+ this.vm.fetchData().then((data) => {
2279
+ const barChartData = AXBarChartReportMapper((data?.data).data ?? {});
2280
+ this.barChartData.set(barChartData);
2281
+ console.log('barChartData', barChartData);
2282
+ });
2283
+ }
2284
+ }, ...(ngDevMode ? [{ debugName: "#fetchData" }] : []));
2285
+ this.barChartData = signal([], ...(ngDevMode ? [{ debugName: "barChartData" }] : []));
2286
+ this.barChartOptions = signal({}, ...(ngDevMode ? [{ debugName: "barChartOptions" }] : []));
2287
+ this.legendOptions = signal({
2288
+ mode: 'horizontal',
2289
+ }, ...(ngDevMode ? [{ debugName: "legendOptions" }] : []));
2290
+ }
2291
+ //#endregion
2292
+ //#region ---- Effects ----
2293
+ /**
2294
+ * Effect to handle data fetching when chart configuration changes
2295
+ */
2296
+ #fetchData;
2297
+ //#endregion
2298
+ //#region ---- Event Handlers ----
2299
+ /**
2300
+ * Handle chart click events
2301
+ */
2302
+ handleChartClick(event) {
2303
+ // TODO: Implement chart click handling
2304
+ console.log('Chart clicked:', event);
2305
+ }
2306
+ /**
2307
+ * Handle chart data point selection
2308
+ */
2309
+ handleDataPointSelect(event) {
2310
+ // TODO: Implement data point selection
2311
+ console.log('Data point selected:', event);
2312
+ }
2313
+ //#endregion
2314
+ //#region ---- Helper Methods ----
2315
+ /**
2316
+ * Check if chart is ready to render
2317
+ */
2318
+ isChartReady() {
2319
+ return !!(this.chartOptions() && this.dataMapping());
2320
+ }
2321
+ /**
2322
+ * Get chart configuration for rendering
2323
+ */
2324
+ getChartConfig() {
2325
+ // TODO: Transform AXPReportChartOptions to chart library format
2326
+ return {
2327
+ type: this.chartType(),
2328
+ options: this.chartOptions(),
2329
+ dataMapping: this.dataMapping(),
2330
+ };
2331
+ }
2332
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2333
+ 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 }); }
2334
+ }
2335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPReportBarChartViewComponent, decorators: [{
2336
+ type: Component,
2337
+ args: [{ selector: 'axp-report-bar-chart-view', standalone: true, imports: [
2338
+ CommonModule,
2339
+ AXDecoratorModule,
2340
+ AXTranslationModule,
2341
+ AXPLayoutBuilderModule,
2342
+ AXBarChartComponent,
2343
+ AXChartLegendComponent,
2344
+ ], 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"] }]
2345
+ }] });
2346
+
2214
2347
  /**
2215
2348
  * Generated bundle index. Do not edit.
2216
2349
  */
2217
2350
 
2218
- export { AXMReportManagementModule, AXPBarChartReportMapper, AXPReportChartViewComponent, AXPReportDefinitionService, AXPReportTableViewComponent, AXPReportViewerPageComponent, AXPReportViewerViewModel, AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, AXPieChartReportMapper, RootConfig };
2351
+ export { AXBarChartReportMapper, AXLineChartReportMapper, AXMReportManagementModule, AXPReportBarChartViewComponent, AXPReportDefinitionService, AXPReportTableViewComponent, AXPReportViewerPageComponent, AXPReportViewerViewModel, AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, AXPieChartReportMapper, RootConfig };
2219
2352
  //# sourceMappingURL=acorex-modules-report-management.mjs.map