@acorex/modules 19.4.14 → 20.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1032) hide show
  1. package/application-management/index.d.ts +161 -13
  2. package/assets/images/weather/cloudy-day-1.svg +175 -0
  3. package/assets/images/weather/cloudy-day-2.svg +176 -0
  4. package/assets/images/weather/cloudy-day-3.svg +175 -0
  5. package/assets/images/weather/cloudy-night-1.svg +198 -0
  6. package/assets/images/weather/cloudy-night-2.svg +198 -0
  7. package/assets/images/weather/cloudy-night-3.svg +198 -0
  8. package/assets/images/weather/cloudy.svg +500 -0
  9. package/assets/images/weather/day.svg +521 -0
  10. package/assets/images/weather/night.svg +503 -0
  11. package/assets/images/weather/rainy-1.svg +157 -0
  12. package/assets/images/weather/rainy-2.svg +133 -0
  13. package/assets/images/weather/rainy-3.svg +157 -0
  14. package/assets/images/weather/rainy-4.svg +66 -0
  15. package/assets/images/weather/rainy-5.svg +90 -0
  16. package/assets/images/weather/rainy-6.svg +91 -0
  17. package/assets/images/weather/rainy-7.svg +91 -0
  18. package/assets/images/weather/snowy-1.svg +230 -0
  19. package/assets/images/weather/snowy-2.svg +237 -0
  20. package/assets/images/weather/snowy-3.svg +268 -0
  21. package/assets/images/weather/snowy-4.svg +94 -0
  22. package/assets/images/weather/snowy-5.svg +166 -0
  23. package/assets/images/weather/snowy-6.svg +225 -0
  24. package/assets/images/weather/thunder.svg +268 -0
  25. package/assets/images/weather/weather-sprite.svg +1245 -0
  26. package/assets/images/weather/weather.svg +1245 -0
  27. package/assets/images/weather/weather_sagittarius.svg +9 -0
  28. package/assets/images/weather/weather_sunset.svg +14 -0
  29. package/auth/index.d.ts +76 -4
  30. package/common/index.d.ts +183 -8
  31. package/content-management/index.d.ts +97 -8
  32. package/conversation/index.d.ts +585 -4
  33. package/dashboard-management/index.d.ts +1142 -5
  34. package/document-management/index.d.ts +289 -7
  35. package/fesm2022/{acorex-modules-application-management-module-designer.component-BJp8imYd.mjs → acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs} +7 -7
  36. package/fesm2022/acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-application-management.mjs +41 -41
  38. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  39. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs → acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs} +44 -44
  40. package/fesm2022/acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map +1 -0
  41. package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs +65 -0
  42. package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map +1 -0
  43. package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs +18 -0
  44. package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs.map +1 -0
  45. package/fesm2022/{acorex-modules-auth-login.module--HO8WVi_.mjs → acorex-modules-auth-login.module-eC1_ukrb.mjs} +8 -8
  46. package/fesm2022/acorex-modules-auth-login.module-eC1_ukrb.mjs.map +1 -0
  47. package/fesm2022/{acorex-modules-auth-master.layout-CKfLvnZR.mjs → acorex-modules-auth-master.layout-DpfqRgAl.mjs} +5 -5
  48. package/fesm2022/acorex-modules-auth-master.layout-DpfqRgAl.mjs.map +1 -0
  49. package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs +59 -0
  50. package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs.map +1 -0
  51. package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs +134 -0
  52. package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +1 -0
  53. package/fesm2022/{acorex-modules-auth-routes-Dphs3LyY.mjs → acorex-modules-auth-routes-EGvejNu9.mjs} +2 -2
  54. package/fesm2022/acorex-modules-auth-routes-EGvejNu9.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-auth-settings.provider-CM-T8nbI.mjs.map +1 -1
  56. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs → acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs} +4 -4
  57. package/fesm2022/acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs.map +1 -0
  58. package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs +40 -0
  59. package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs.map +1 -0
  60. package/fesm2022/{acorex-modules-auth-two-factor.module-CKp1SEfD.mjs → acorex-modules-auth-two-factor.module-DF3_fgzH.mjs} +7 -7
  61. package/fesm2022/acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs +135 -0
  63. package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-auth.mjs +1 -1
  65. package/fesm2022/{acorex-modules-common-search-popup.component-tUvSQpDP.mjs → acorex-modules-common-search-popup.component-B5JU9uH9.mjs} +4 -4
  66. package/fesm2022/acorex-modules-common-search-popup.component-B5JU9uH9.mjs.map +1 -0
  67. package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs +53 -0
  68. package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs.map +1 -0
  69. package/fesm2022/acorex-modules-common.mjs +526 -36
  70. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  71. package/fesm2022/acorex-modules-content-management.mjs +121 -51
  72. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  73. package/fesm2022/acorex-modules-conversation.mjs +507 -46
  74. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  75. package/fesm2022/acorex-modules-dashboard-management.mjs +1389 -95
  76. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  77. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs → acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs} +234 -159
  78. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs.map +1 -0
  79. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs → acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs} +6 -8
  80. package/fesm2022/acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs.map +1 -0
  81. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs → acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs} +5 -5
  82. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs.map +1 -0
  83. package/fesm2022/{acorex-modules-document-management-details-view.component-llMxeeFn.mjs → acorex-modules-document-management-details-view.component-DBdPqZC-.mjs} +5 -5
  84. package/fesm2022/acorex-modules-document-management-details-view.component-DBdPqZC-.mjs.map +1 -0
  85. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs → acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs} +5 -5
  86. package/fesm2022/acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs.map +1 -0
  87. package/fesm2022/{acorex-modules-document-management-drive.component-BQ2w-PZw.mjs → acorex-modules-document-management-drive.component-B-a1lpDK.mjs} +8 -8
  88. package/fesm2022/acorex-modules-document-management-drive.component-B-a1lpDK.mjs.map +1 -0
  89. package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs +19 -0
  90. package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs.map +1 -0
  91. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs → acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs} +5 -5
  92. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs.map +1 -0
  93. package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs +68 -0
  94. package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs.map +1 -0
  95. package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs +19 -0
  96. package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs.map +1 -0
  97. package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs +51 -0
  98. package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs +183 -0
  100. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs +29 -0
  102. package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs.map +1 -0
  103. package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs +38 -0
  104. package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs +32 -0
  106. package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs.map +1 -0
  107. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs → acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs} +2 -2
  108. package/fesm2022/acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs.map +1 -0
  109. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs → acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs} +5 -5
  110. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs.map +1 -0
  111. package/fesm2022/{acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs → acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs} +6 -7
  112. package/fesm2022/acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs.map +1 -0
  113. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs +54 -0
  114. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs.map +1 -0
  115. package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs +19 -0
  116. package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs.map +1 -0
  117. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs → acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs} +5 -5
  118. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs.map +1 -0
  119. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs +36 -0
  120. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs.map +1 -0
  121. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  122. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-KTKkPz-B.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs} +58 -59
  123. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs.map +1 -0
  124. package/fesm2022/{acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs → acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs} +2 -2
  125. package/fesm2022/acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs.map +1 -0
  126. package/fesm2022/{acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs → acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs} +5 -7
  127. package/fesm2022/acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs.map +1 -0
  128. package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs → acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs} +2 -2
  129. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs.map +1 -0
  130. package/fesm2022/{acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs → acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs} +2 -2
  131. package/fesm2022/acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs.map +1 -0
  132. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs → acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs} +5 -5
  133. package/fesm2022/acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs.map +1 -0
  134. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BLobMX4C.mjs → acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs} +7 -8
  135. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs.map +1 -0
  136. package/fesm2022/{acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs → acorex-modules-form-template-management-template.entity-Cps77n3G.mjs} +2 -2
  137. package/fesm2022/acorex-modules-form-template-management-template.entity-Cps77n3G.mjs.map +1 -0
  138. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs → acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs} +5 -5
  139. package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs.map +1 -0
  140. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  141. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs → acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs} +34 -27
  142. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs.map +1 -0
  143. package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs +28 -0
  144. package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs.map +1 -0
  145. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  146. package/fesm2022/acorex-modules-log-management.mjs +10 -10
  147. package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
  148. package/fesm2022/acorex-modules-notification-management.mjs +42 -44
  149. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  150. package/fesm2022/{acorex-modules-organization-management-add-item.component-CittqJHu.mjs → acorex-modules-organization-management-add-item.component-COUAmxM8.mjs} +4 -4
  151. package/fesm2022/acorex-modules-organization-management-add-item.component-COUAmxM8.mjs.map +1 -0
  152. package/fesm2022/acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs.map +1 -1
  153. package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +1 -1
  154. package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +1 -1
  155. package/fesm2022/acorex-modules-organization-management-department.entity-BMojk26d.mjs.map +1 -1
  156. package/fesm2022/acorex-modules-organization-management-division.entity-BnWpX4US.mjs.map +1 -1
  157. package/fesm2022/acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs.map +1 -1
  158. package/fesm2022/acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs.map +1 -1
  159. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs → acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs} +7 -15
  160. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs.map +1 -0
  161. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CtA19B8x.mjs → acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs} +4 -4
  162. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs.map +1 -0
  163. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs → acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs} +12 -21
  164. package/fesm2022/acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs.map +1 -0
  165. package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map +1 -1
  166. package/fesm2022/acorex-modules-organization-management-position.entity-CY4TugWR.mjs.map +1 -1
  167. package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs.map +1 -1
  168. package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs.map +1 -1
  169. package/fesm2022/acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs.map +1 -1
  170. package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
  171. package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs.map +1 -1
  172. package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +1 -1
  173. package/fesm2022/acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs.map +1 -1
  174. package/fesm2022/acorex-modules-organization-management-skill.entity-D9XojzUV.mjs.map +1 -1
  175. package/fesm2022/acorex-modules-organization-management-team.entity-mYPhrc2l.mjs.map +1 -1
  176. package/fesm2022/acorex-modules-organization-management.mjs +124 -236
  177. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  178. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CzMi7CBH.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs} +221 -110
  179. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs.map +1 -0
  180. package/fesm2022/{acorex-modules-platform-management-list-version.component-DfbMc2hn.mjs → acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs} +5 -5
  181. package/fesm2022/acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs.map +1 -0
  182. package/fesm2022/{acorex-modules-platform-management-settings.provider-B-19OJn0.mjs → acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs} +2 -2
  183. package/fesm2022/acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs.map +1 -0
  184. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  185. package/fesm2022/acorex-modules-project-management.mjs +139 -65
  186. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  187. package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
  188. package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
  189. package/fesm2022/{acorex-modules-security-management-permissions-editor.component-Ccx0_9L_.mjs → acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs} +5 -5
  190. package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +1 -0
  191. package/fesm2022/{acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs → acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs} +4 -4
  192. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +1 -0
  193. package/fesm2022/{acorex-modules-security-management-permissions-widget-designer.component-CoqOAn_m.mjs → acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs} +5 -6
  194. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +1 -0
  195. package/fesm2022/{acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs → acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs} +4 -4
  196. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +1 -0
  197. package/fesm2022/{acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs → acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs} +5 -6
  198. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +1 -0
  199. package/fesm2022/{acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs → acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs} +5 -6
  200. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +1 -0
  201. package/fesm2022/acorex-modules-security-management.mjs +48 -48
  202. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  203. package/fesm2022/{acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs → acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs} +4 -4
  204. package/fesm2022/acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs.map +1 -0
  205. package/fesm2022/{acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs → acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs} +4 -4
  206. package/fesm2022/acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs.map +1 -0
  207. package/fesm2022/acorex-modules-settings-management.mjs +6 -6
  208. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
  209. package/fesm2022/acorex-modules-text-template-management-settings.provider-fX0dhWUL.mjs.map +1 -1
  210. package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
  211. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
  212. package/fesm2022/acorex-modules-training-management.mjs +43 -43
  213. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  214. package/fesm2022/{acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs → acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs} +8 -8
  215. package/fesm2022/acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs.map +1 -0
  216. package/fesm2022/acorex-modules-workflow-management.mjs +12 -12
  217. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  218. package/fesm2022/acorex-modules.mjs.map +1 -1
  219. package/form-template-management/index.d.ts +144 -5
  220. package/index.d.ts +2 -2
  221. package/issue-management/index.d.ts +130 -6
  222. package/log-management/index.d.ts +94 -7
  223. package/notification-management/index.d.ts +266 -10
  224. package/organization-management/index.d.ts +544 -4
  225. package/package.json +1 -1
  226. package/platform-management/index.d.ts +350 -4
  227. package/project-management/index.d.ts +336 -7
  228. package/scheduler-job-management/index.d.ts +65 -5
  229. package/security-management/index.d.ts +167 -4
  230. package/settings-management/index.d.ts +59 -2
  231. package/text-template-management/index.d.ts +116 -5
  232. package/training-management/index.d.ts +330 -7
  233. package/workflow-management/index.d.ts +28 -2
  234. package/application-management/lib/application-management-mock-data.d.ts +0 -67
  235. package/application-management/lib/application-management.module.d.ts +0 -14
  236. package/application-management/lib/application-management.route.d.ts +0 -2
  237. package/application-management/lib/application-management.service.d.ts +0 -34
  238. package/application-management/lib/application-management.source.d.ts +0 -8
  239. package/application-management/lib/application-management.types.d.ts +0 -50
  240. package/application-management/lib/const.d.ts +0 -5
  241. package/application-management/lib/entities/application-module.entity.d.ts +0 -3
  242. package/application-management/lib/entities/applications.entity.d.ts +0 -3
  243. package/application-management/lib/entities/edition.entity.d.ts +0 -3
  244. package/application-management/lib/entities/entity.entity.d.ts +0 -3
  245. package/application-management/lib/entities/feature.entity.d.ts +0 -3
  246. package/application-management/lib/entities/modules.entity.d.ts +0 -3
  247. package/application-management/lib/entities/permission.entity.d.ts +0 -3
  248. package/application-management/lib/entities/property.entity.d.ts +0 -3
  249. package/application-management/lib/entity.loader.d.ts +0 -9
  250. package/application-management/lib/layouts/index.d.ts +0 -1
  251. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +0 -74
  252. package/application-management/lib/menu.provider.d.ts +0 -4
  253. package/application-management/lib/module-designer/module-designer.component.d.ts +0 -34
  254. package/application-management/lib/module-designer/module-designer.service.d.ts +0 -34
  255. package/application-management/lib/module-designer/module-designer.type.d.ts +0 -1
  256. package/application-management/lib/services/application-management.service.d.ts +0 -10
  257. package/application-management/lib/services/application-module-management.service.d.ts +0 -10
  258. package/application-management/lib/services/context-menu.service.d.ts +0 -26
  259. package/application-management/lib/services/edition-management.service.d.ts +0 -10
  260. package/application-management/lib/services/entity-management.service.d.ts +0 -10
  261. package/application-management/lib/services/feature-management.service.d.ts +0 -10
  262. package/application-management/lib/services/module-management.service.d.ts +0 -10
  263. package/application-management/lib/services/permission-management.service.d.ts +0 -10
  264. package/application-management/lib/services/property-management.service.d.ts +0 -10
  265. package/application-management/lib/workflows/create-module-entity.workflow.d.ts +0 -9
  266. package/application-management/lib/workflows/index.d.ts +0 -2
  267. package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +0 -2
  268. package/auth/lib/auth.config.d.ts +0 -29
  269. package/auth/lib/auth.module.d.ts +0 -10
  270. package/auth/lib/auth.routes.d.ts +0 -2
  271. package/auth/lib/error-handler.d.ts +0 -9
  272. package/auth/lib/menu.provider.d.ts +0 -5
  273. package/auth/lib/pages/account/account.module.d.ts +0 -8
  274. package/auth/lib/pages/account/app-chooser/app-chooser-list.component.d.ts +0 -12
  275. package/auth/lib/pages/account/app-chooser/app-chooser-slot.component.d.ts +0 -12
  276. package/auth/lib/pages/account/app-chooser/app-chooser.component.d.ts +0 -13
  277. package/auth/lib/pages/account/profile/profile-slot.component.d.ts +0 -23
  278. package/auth/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +0 -10
  279. package/auth/lib/pages/account/tenant-chooser/tenant-chooser.component.d.ts +0 -24
  280. package/auth/lib/pages/account/user-profile-card/user-profile-card.component.d.ts +0 -26
  281. package/auth/lib/pages/account/user-sessions/user-sessions.component.d.ts +0 -71
  282. package/auth/lib/pages/account/user-sessions/user-sessions.service.d.ts +0 -22
  283. package/auth/lib/pages/forgot/password/password.component.d.ts +0 -11
  284. package/auth/lib/pages/forgot/routes.d.ts +0 -3
  285. package/auth/lib/pages/login/login.module.d.ts +0 -7
  286. package/auth/lib/pages/login/password/password.component.d.ts +0 -26
  287. package/auth/lib/pages/two-factor/two-factor-code/two-factor-code.component.d.ts +0 -8
  288. package/auth/lib/pages/two-factor/two-factor.module.d.ts +0 -7
  289. package/auth/lib/settings.provider.d.ts +0 -8
  290. package/auth/lib/shared/layouts/blank/blank.layout.d.ts +0 -8
  291. package/auth/lib/shared/layouts/master/master.layout.d.ts +0 -7
  292. package/auth/lib/shared/services/idle.service.d.ts +0 -17
  293. package/auth/lib/shared/services/index.d.ts +0 -1
  294. package/common/lib/common.module.d.ts +0 -8
  295. package/common/lib/const.d.ts +0 -12
  296. package/common/lib/entity.provider.d.ts +0 -10
  297. package/common/lib/features/global-search/index.d.ts +0 -3
  298. package/common/lib/features/global-search/search-popup.component.d.ts +0 -22
  299. package/common/lib/features/global-search/search-slot.component.d.ts +0 -9
  300. package/common/lib/features/global-search/search.config.d.ts +0 -5
  301. package/common/lib/features/global-search/search.module.d.ts +0 -11
  302. package/common/lib/features/global-search/search.viewmodel.d.ts +0 -34
  303. package/common/lib/features/global-search/workflows/search.workflow.d.ts +0 -11
  304. package/common/lib/menu.provider.d.ts +0 -6
  305. package/common/lib/permission-definition.provider.d.ts +0 -4
  306. package/common/lib/search-command.provider.d.ts +0 -4
  307. package/common/lib/settings.provider.d.ts +0 -4
  308. package/common/lib/widgets-names-list.d.ts +0 -40
  309. package/content-management/lib/const.d.ts +0 -19
  310. package/content-management/lib/content-management.module.d.ts +0 -7
  311. package/content-management/lib/entities/index.d.ts +0 -1
  312. package/content-management/lib/entities/promotion/index.d.ts +0 -5
  313. package/content-management/lib/entities/promotion/promotion.datasource.d.ts +0 -7
  314. package/content-management/lib/entities/promotion/promotion.entity.d.ts +0 -3
  315. package/content-management/lib/entities/promotion/promotion.service.d.ts +0 -10
  316. package/content-management/lib/entities/promotion/promotion.types.d.ts +0 -16
  317. package/content-management/lib/entity.provider.d.ts +0 -10
  318. package/content-management/lib/features/index.d.ts +0 -1
  319. package/content-management/lib/features/promotion/components/index.d.ts +0 -1
  320. package/content-management/lib/features/promotion/components/promotion-slot/promotion-slot.component.d.ts +0 -13
  321. package/content-management/lib/features/promotion/index.d.ts +0 -1
  322. package/content-management/lib/menu.provider.d.ts +0 -5
  323. package/content-management/lib/permission-definition.provider.d.ts +0 -4
  324. package/content-management/lib/search-command.provider.d.ts +0 -4
  325. package/content-management/lib/setting.provider.d.ts +0 -4
  326. package/conversation/lib/const.d.ts +0 -26
  327. package/conversation/lib/conversation.module.d.ts +0 -37
  328. package/conversation/lib/entities/index.d.ts +0 -2
  329. package/conversation/lib/entities/message/index.d.ts +0 -3
  330. package/conversation/lib/entities/message/message.entity.d.ts +0 -3
  331. package/conversation/lib/entities/message/message.service.d.ts +0 -10
  332. package/conversation/lib/entities/message/message.types.d.ts +0 -20
  333. package/conversation/lib/entities/room/index.d.ts +0 -3
  334. package/conversation/lib/entities/room/room.entity.d.ts +0 -3
  335. package/conversation/lib/entities/room/room.service.d.ts +0 -10
  336. package/conversation/lib/entities/room/room.types.d.ts +0 -8
  337. package/conversation/lib/entity.provider.d.ts +0 -12
  338. package/conversation/lib/features/chat/chat-preview.helper.d.ts +0 -68
  339. package/conversation/lib/features/chat/chat.component.d.ts +0 -42
  340. package/conversation/lib/features/chat/chat.service.d.ts +0 -101
  341. package/conversation/lib/features/chat/chat.type.d.ts +0 -38
  342. package/conversation/lib/features/chat/components/chat-item/chat-item.component.d.ts +0 -21
  343. package/conversation/lib/features/chat/components/chat-preview/chat-preview.component.d.ts +0 -34
  344. package/conversation/lib/features/chat/index.d.ts +0 -5
  345. package/conversation/lib/features/comment/comment-list-view.component.d.ts +0 -67
  346. package/conversation/lib/features/comment/comment-lookup-popup.component.d.ts +0 -10
  347. package/conversation/lib/features/comment/comment.service.d.ts +0 -66
  348. package/conversation/lib/features/comment/comment.type.d.ts +0 -45
  349. package/conversation/lib/features/comment/index.d.ts +0 -4
  350. package/conversation/lib/features/index.d.ts +0 -2
  351. package/dashboard-management/lib/const.d.ts +0 -19
  352. package/dashboard-management/lib/dashboard-management.module.d.ts +0 -7
  353. package/dashboard-management/lib/entities/dashboard/dashboard.entity.d.ts +0 -3
  354. package/dashboard-management/lib/entities/dashboard/dashboard.service.d.ts +0 -10
  355. package/dashboard-management/lib/entities/dashboard/dashboard.types.d.ts +0 -12
  356. package/dashboard-management/lib/entities/dashboard/index.d.ts +0 -3
  357. package/dashboard-management/lib/entities/index.d.ts +0 -1
  358. package/dashboard-management/lib/entity.provider.d.ts +0 -10
  359. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.d.ts +0 -142
  360. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.store.d.ts +0 -39
  361. package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.type.d.ts +0 -20
  362. package/dashboard-management/lib/features/home-dashboard/dashboard-home/index.d.ts +0 -3
  363. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.d.ts +0 -21
  364. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +0 -14
  365. package/dashboard-management/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.d.ts +0 -11
  366. package/dashboard-management/lib/features/home-dashboard/index.d.ts +0 -1
  367. package/dashboard-management/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.d.ts +0 -20
  368. package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.d.ts +0 -18
  369. package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.d.ts +0 -7
  370. package/dashboard-management/lib/features/shared/widgets/bar-chart/index.d.ts +0 -2
  371. package/dashboard-management/lib/features/shared/widgets/chart.type.d.ts +0 -3
  372. package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.d.ts +0 -39
  373. package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.d.ts +0 -7
  374. package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar.types.d.ts +0 -50
  375. package/dashboard-management/lib/features/shared/widgets/clock-calendar/index.d.ts +0 -3
  376. package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.d.ts +0 -24
  377. package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.d.ts +0 -2
  378. package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/index.d.ts +0 -2
  379. package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.d.ts +0 -18
  380. package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.d.ts +0 -7
  381. package/dashboard-management/lib/features/shared/widgets/donut-chart/index.d.ts +0 -2
  382. package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.d.ts +0 -17
  383. package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.d.ts +0 -7
  384. package/dashboard-management/lib/features/shared/widgets/gauge-chart/index.d.ts +0 -2
  385. package/dashboard-management/lib/features/shared/widgets/index.d.ts +0 -9
  386. package/dashboard-management/lib/features/shared/widgets/line-chart/index.d.ts +0 -2
  387. package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.component.d.ts +0 -18
  388. package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.config.d.ts +0 -7
  389. package/dashboard-management/lib/features/shared/widgets/sticky-note/index.d.ts +0 -2
  390. package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.d.ts +0 -21
  391. package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.d.ts +0 -7
  392. package/dashboard-management/lib/features/shared/widgets/tasklist/index.d.ts +0 -3
  393. package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.component.d.ts +0 -34
  394. package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.config.d.ts +0 -7
  395. package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist.type.d.ts +0 -36
  396. package/dashboard-management/lib/features/shared/widgets/weather/index.d.ts +0 -3
  397. package/dashboard-management/lib/features/shared/widgets/weather/weather-services/index.d.ts +0 -3
  398. package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.d.ts +0 -174
  399. package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.key.d.ts +0 -2
  400. package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.d.ts +0 -47
  401. package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.service.d.ts +0 -48
  402. package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.component.d.ts +0 -114
  403. package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.config.d.ts +0 -14
  404. package/dashboard-management/lib/menu.provider.d.ts +0 -6
  405. package/dashboard-management/lib/settings.keys.d.ts +0 -3
  406. package/document-management/lib/badge.provider.d.ts +0 -11
  407. package/document-management/lib/const.d.ts +0 -49
  408. package/document-management/lib/document-management.module.d.ts +0 -16
  409. package/document-management/lib/entities/document/document.entity.d.ts +0 -3
  410. package/document-management/lib/entities/document/document.module.d.ts +0 -6
  411. package/document-management/lib/entities/document/document.service.d.ts +0 -15
  412. package/document-management/lib/entities/document/document.types.d.ts +0 -14
  413. package/document-management/lib/entities/document/index.d.ts +0 -4
  414. package/document-management/lib/entities/document-type/document-type.entity.d.ts +0 -3
  415. package/document-management/lib/entities/document-type/document-type.module.d.ts +0 -6
  416. package/document-management/lib/entities/document-type/document-type.service.d.ts +0 -10
  417. package/document-management/lib/entities/document-type/document-type.types.d.ts +0 -21
  418. package/document-management/lib/entities/document-type/index.d.ts +0 -4
  419. package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.entity.d.ts +0 -3
  420. package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.module.d.ts +0 -6
  421. package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.service.d.ts +0 -10
  422. package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.types.d.ts +0 -5
  423. package/document-management/lib/entities/document-type-meta-definition/index.d.ts +0 -4
  424. package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.entity.d.ts +0 -3
  425. package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.module.d.ts +0 -6
  426. package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.service.d.ts +0 -10
  427. package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.types.d.ts +0 -5
  428. package/document-management/lib/entities/document-type-meta-value/index.d.ts +0 -4
  429. package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.entity.d.ts +0 -3
  430. package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.module.d.ts +0 -6
  431. package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.service.d.ts +0 -10
  432. package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.types.d.ts +0 -5
  433. package/document-management/lib/entities/document-type-status-definition/index.d.ts +0 -4
  434. package/document-management/lib/entities/folder/folder.entity.d.ts +0 -3
  435. package/document-management/lib/entities/folder/folder.service.d.ts +0 -14
  436. package/document-management/lib/entities/folder/folder.types.d.ts +0 -42
  437. package/document-management/lib/entities/folder/index.d.ts +0 -3
  438. package/document-management/lib/entities/index.d.ts +0 -6
  439. package/document-management/lib/entity.provider.d.ts +0 -10
  440. package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +0 -27
  441. package/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +0 -14
  442. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +0 -223
  443. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +0 -142
  444. package/document-management/lib/features/document-explorer/index.d.ts +0 -3
  445. package/document-management/lib/features/document-explorer/settings.keys.d.ts +0 -5
  446. package/document-management/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.d.ts +0 -145
  447. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +0 -143
  448. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +0 -143
  449. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +0 -143
  450. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +0 -143
  451. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +0 -143
  452. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +0 -143
  453. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +0 -143
  454. package/document-management/lib/features/drive/drive.component.d.ts +0 -259
  455. package/document-management/lib/features/drive/index.d.ts +0 -3
  456. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +0 -295
  457. package/document-management/lib/features/drive-choose/drive-choose.module.d.ts +0 -7
  458. package/document-management/lib/features/drive-choose/slots/file-uploader-widget-extension/file-uploader-widget-extension.component.d.ts +0 -15
  459. package/document-management/lib/features/file-type/file-type.module.d.ts +0 -6
  460. package/document-management/lib/features/file-type/index.d.ts +0 -2
  461. package/document-management/lib/features/file-type/providers/archive.file.d.ts +0 -4
  462. package/document-management/lib/features/file-type/providers/audio.file.d.ts +0 -4
  463. package/document-management/lib/features/file-type/providers/code.file.d.ts +0 -4
  464. package/document-management/lib/features/file-type/providers/document.file.d.ts +0 -4
  465. package/document-management/lib/features/file-type/providers/image.file.d.ts +0 -4
  466. package/document-management/lib/features/file-type/providers/index.d.ts +0 -6
  467. package/document-management/lib/features/file-type/providers/video.file.d.ts +0 -4
  468. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-column.component.d.ts +0 -6
  469. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-designer.component.d.ts +0 -6
  470. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-edit.component.d.ts +0 -19
  471. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-view.component.d.ts +0 -6
  472. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-widget.config.d.ts +0 -7
  473. package/document-management/lib/features/file-type/widgets/file-type-extension/index.d.ts +0 -5
  474. package/document-management/lib/features/file-type/widgets/index.d.ts +0 -1
  475. package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +0 -16
  476. package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +0 -13
  477. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +0 -204
  478. package/document-management/lib/features/shared/components/index.d.ts +0 -3
  479. package/document-management/lib/features/shared/components/link-dialog/link-dialog.component.d.ts +0 -24
  480. package/document-management/lib/features/shared/components/lock-dialog/lock-dialog.component.d.ts +0 -16
  481. package/document-management/lib/features/shared/components/share-dialog/share-dialog.component.d.ts +0 -22
  482. package/document-management/lib/features/shared/components/share-email-dialog/share-email-dialog.component.d.ts +0 -17
  483. package/document-management/lib/features/shared/components/unlock-dialog/unlock-dialog.component.d.ts +0 -10
  484. package/document-management/lib/features/shared/document-manager.service.d.ts +0 -378
  485. package/document-management/lib/features/shared/document-manager.types.d.ts +0 -30
  486. package/document-management/lib/features/shared/index.d.ts +0 -3
  487. package/document-management/lib/features/workflow/upload/upload.workflow.d.ts +0 -17
  488. package/document-management/lib/menu.provider.d.ts +0 -6
  489. package/document-management/lib/permission-definition.provider.d.ts +0 -8
  490. package/document-management/lib/permission.keys.d.ts +0 -19
  491. package/document-management/lib/search-command.provider.d.ts +0 -4
  492. package/document-management/lib/settings.provider.d.ts +0 -4
  493. package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs.map +0 -1
  494. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs.map +0 -1
  495. package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs +0 -65
  496. package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs.map +0 -1
  497. package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs +0 -18
  498. package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs.map +0 -1
  499. package/fesm2022/acorex-modules-auth-login.module--HO8WVi_.mjs.map +0 -1
  500. package/fesm2022/acorex-modules-auth-master.layout-CKfLvnZR.mjs.map +0 -1
  501. package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs +0 -59
  502. package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs.map +0 -1
  503. package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs +0 -134
  504. package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs.map +0 -1
  505. package/fesm2022/acorex-modules-auth-routes-Dphs3LyY.mjs.map +0 -1
  506. package/fesm2022/acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs.map +0 -1
  507. package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs +0 -40
  508. package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs.map +0 -1
  509. package/fesm2022/acorex-modules-auth-two-factor.module-CKp1SEfD.mjs.map +0 -1
  510. package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs +0 -135
  511. package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs.map +0 -1
  512. package/fesm2022/acorex-modules-common-search-popup.component-tUvSQpDP.mjs.map +0 -1
  513. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs.map +0 -1
  514. package/fesm2022/acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs.map +0 -1
  515. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs.map +0 -1
  516. package/fesm2022/acorex-modules-document-management-details-view.component-llMxeeFn.mjs.map +0 -1
  517. package/fesm2022/acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs.map +0 -1
  518. package/fesm2022/acorex-modules-document-management-drive.component-BQ2w-PZw.mjs.map +0 -1
  519. package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs +0 -20
  520. package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs.map +0 -1
  521. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs.map +0 -1
  522. package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs +0 -70
  523. package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs.map +0 -1
  524. package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs +0 -20
  525. package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs.map +0 -1
  526. package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs +0 -52
  527. package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs.map +0 -1
  528. package/fesm2022/acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs.map +0 -1
  529. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs.map +0 -1
  530. package/fesm2022/acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs.map +0 -1
  531. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs +0 -55
  532. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs.map +0 -1
  533. package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs +0 -20
  534. package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs.map +0 -1
  535. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs.map +0 -1
  536. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs +0 -37
  537. package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs.map +0 -1
  538. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-KTKkPz-B.mjs.map +0 -1
  539. package/fesm2022/acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs.map +0 -1
  540. package/fesm2022/acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs.map +0 -1
  541. package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs.map +0 -1
  542. package/fesm2022/acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs.map +0 -1
  543. package/fesm2022/acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs.map +0 -1
  544. package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-BLobMX4C.mjs.map +0 -1
  545. package/fesm2022/acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs.map +0 -1
  546. package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs.map +0 -1
  547. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs.map +0 -1
  548. package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs +0 -28
  549. package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs.map +0 -1
  550. package/fesm2022/acorex-modules-organization-management-add-item.component-CittqJHu.mjs.map +0 -1
  551. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs.map +0 -1
  552. package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-CtA19B8x.mjs.map +0 -1
  553. package/fesm2022/acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs.map +0 -1
  554. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CzMi7CBH.mjs.map +0 -1
  555. package/fesm2022/acorex-modules-platform-management-list-version.component-DfbMc2hn.mjs.map +0 -1
  556. package/fesm2022/acorex-modules-platform-management-settings.provider-B-19OJn0.mjs.map +0 -1
  557. package/fesm2022/acorex-modules-security-management-permissions-editor.component-Ccx0_9L_.mjs.map +0 -1
  558. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs.map +0 -1
  559. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-CoqOAn_m.mjs.map +0 -1
  560. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs.map +0 -1
  561. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs.map +0 -1
  562. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs.map +0 -1
  563. package/fesm2022/acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs.map +0 -1
  564. package/fesm2022/acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs.map +0 -1
  565. package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs.map +0 -1
  566. package/form-template-management/lib/const.d.ts +0 -23
  567. package/form-template-management/lib/entities/category/category.entity.d.ts +0 -3
  568. package/form-template-management/lib/entities/category/category.module.d.ts +0 -6
  569. package/form-template-management/lib/entities/category/category.service.d.ts +0 -10
  570. package/form-template-management/lib/entities/category/category.types.d.ts +0 -6
  571. package/form-template-management/lib/entities/category/index.d.ts +0 -3
  572. package/form-template-management/lib/entities/template/index.d.ts +0 -3
  573. package/form-template-management/lib/entities/template/template.entity.d.ts +0 -3
  574. package/form-template-management/lib/entities/template/template.module.d.ts +0 -6
  575. package/form-template-management/lib/entities/template/template.service.d.ts +0 -10
  576. package/form-template-management/lib/entities/template/template.types.d.ts +0 -52
  577. package/form-template-management/lib/entity.provider.d.ts +0 -10
  578. package/form-template-management/lib/features/designer/designer-connector.service.d.ts +0 -12
  579. package/form-template-management/lib/features/designer/designer.page.d.ts +0 -9
  580. package/form-template-management/lib/features/designer/index.d.ts +0 -5
  581. package/form-template-management/lib/features/designer/template.provider.d.ts +0 -7
  582. package/form-template-management/lib/features/designer/widgets/template/index.d.ts +0 -4
  583. package/form-template-management/lib/features/designer/widgets/template/template-widget-designer.component.d.ts +0 -25
  584. package/form-template-management/lib/features/designer/widgets/template/template-widget-edit.component.d.ts +0 -11
  585. package/form-template-management/lib/features/designer/widgets/template/template-widget-view.component.d.ts +0 -11
  586. package/form-template-management/lib/features/designer/widgets/template/template-widget.config.d.ts +0 -5
  587. package/form-template-management/lib/features/designer/widgets/template-designer/index.d.ts +0 -2
  588. package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget-view.component.d.ts +0 -9
  589. package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget.config.d.ts +0 -7
  590. package/form-template-management/lib/features/designer/widgets/template-picker/template-picker.component.d.ts +0 -40
  591. package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +0 -31
  592. package/form-template-management/lib/features/designer/workflows/create-template.workflow.d.ts +0 -2
  593. package/form-template-management/lib/features/designer/workflows/design-template.workflow.d.ts +0 -2
  594. package/form-template-management/lib/features/designer/workflows/workflow.actions.d.ts +0 -17
  595. package/form-template-management/lib/features/index.d.ts +0 -1
  596. package/form-template-management/lib/features/viewer/viewer-connector.service.d.ts +0 -13
  597. package/form-template-management/lib/features/viewer/viewer-popup.component.d.ts +0 -25
  598. package/form-template-management/lib/features/viewer/workflows/open-template.workflow.d.ts +0 -9
  599. package/form-template-management/lib/form-template-management.module.d.ts +0 -11
  600. package/form-template-management/lib/menu.provider.d.ts +0 -6
  601. package/form-template-management/lib/permission-definition.provider.d.ts +0 -8
  602. package/form-template-management/lib/permission.keys.d.ts +0 -19
  603. package/form-template-management/lib/search-command.provider.d.ts +0 -4
  604. package/form-template-management/lib/settings.keys.d.ts +0 -6
  605. package/form-template-management/lib/settings.provider.d.ts +0 -8
  606. package/issue-management/lib/components/capture-screen/capture-screen.types.d.ts +0 -19
  607. package/issue-management/lib/components/capture-screen/components/capture-screen-component/capture-screen.component.d.ts +0 -37
  608. package/issue-management/lib/components/capture-screen/index.d.ts +0 -2
  609. package/issue-management/lib/components/capture-screen/services/capture-screen.service.d.ts +0 -33
  610. package/issue-management/lib/const.d.ts +0 -37
  611. package/issue-management/lib/entities/index.d.ts +0 -3
  612. package/issue-management/lib/entities/issue-type/index.d.ts +0 -3
  613. package/issue-management/lib/entities/issue-type/issue-type.entity.d.ts +0 -3
  614. package/issue-management/lib/entities/issue-type/issue-type.service.d.ts +0 -10
  615. package/issue-management/lib/entities/issue-type/issue-type.types.d.ts +0 -6
  616. package/issue-management/lib/entities/my-reported-issues/index.d.ts +0 -3
  617. package/issue-management/lib/entities/my-reported-issues/my-reported-issues.entity.d.ts +0 -3
  618. package/issue-management/lib/entities/my-reported-issues/my-reported-issues.service.d.ts +0 -10
  619. package/issue-management/lib/entities/my-reported-issues/my-reported-issues.types.d.ts +0 -5
  620. package/issue-management/lib/entities/reported-issues/index.d.ts +0 -3
  621. package/issue-management/lib/entities/reported-issues/reported-issues.entity.d.ts +0 -3
  622. package/issue-management/lib/entities/reported-issues/reported-issues.service.d.ts +0 -10
  623. package/issue-management/lib/entities/reported-issues/reported-issues.types.d.ts +0 -20
  624. package/issue-management/lib/entity.provider.d.ts +0 -10
  625. package/issue-management/lib/features/report-issue/components/index.d.ts +0 -1
  626. package/issue-management/lib/features/report-issue/components/report-new-issue/report-new-issue.component.d.ts +0 -51
  627. package/issue-management/lib/features/report-issue/index.d.ts +0 -2
  628. package/issue-management/lib/features/report-issue/report-issue.types.d.ts +0 -24
  629. package/issue-management/lib/features/report-issue/services/report-new-issue.viewmodel.d.ts +0 -17
  630. package/issue-management/lib/features/report-issue/workflows/index.d.ts +0 -1
  631. package/issue-management/lib/features/report-issue/workflows/show-report-issue.workflow.d.ts +0 -10
  632. package/issue-management/lib/issue-management.module.d.ts +0 -7
  633. package/issue-management/lib/menu.provider.d.ts +0 -5
  634. package/issue-management/lib/setting.provider.d.ts +0 -4
  635. package/log-management/lib/const.d.ts +0 -20
  636. package/log-management/lib/entities/axp-log/axp-log.entity.d.ts +0 -3
  637. package/log-management/lib/entities/axp-log/axp-log.service.d.ts +0 -10
  638. package/log-management/lib/entities/axp-log/axp-log.types.d.ts +0 -23
  639. package/log-management/lib/entities/axp-log/index.d.ts +0 -3
  640. package/log-management/lib/entity.provider.d.ts +0 -10
  641. package/log-management/lib/log-management.module.d.ts +0 -6
  642. package/log-management/lib/menu.provider.d.ts +0 -5
  643. package/log-management/lib/permission-definition.provider.d.ts +0 -4
  644. package/log-management/lib/search-command.provider.d.ts +0 -4
  645. package/log-management/lib/settings.keys.d.ts +0 -16
  646. package/log-management/lib/settings.provider.d.ts +0 -12
  647. package/notification-management/lib/const.d.ts +0 -28
  648. package/notification-management/lib/entities/channel/channel.entity.d.ts +0 -3
  649. package/notification-management/lib/entities/channel/channel.service.d.ts +0 -10
  650. package/notification-management/lib/entities/channel/channel.types.d.ts +0 -21
  651. package/notification-management/lib/entities/channel/index.d.ts +0 -3
  652. package/notification-management/lib/entities/index.d.ts +0 -3
  653. package/notification-management/lib/entities/my-notification.d.ts +0 -3
  654. package/notification-management/lib/entities/notification/index.d.ts +0 -3
  655. package/notification-management/lib/entities/notification/notification.entity.d.ts +0 -3
  656. package/notification-management/lib/entities/notification/notification.service.d.ts +0 -17
  657. package/notification-management/lib/entities/notification/notification.types.d.ts +0 -5
  658. package/notification-management/lib/entities/notification-log.entity.d.ts +0 -3
  659. package/notification-management/lib/entities/template/index.d.ts +0 -4
  660. package/notification-management/lib/entities/template/template.entity.d.ts +0 -3
  661. package/notification-management/lib/entities/template/template.module.d.ts +0 -6
  662. package/notification-management/lib/entities/template/template.service.d.ts +0 -10
  663. package/notification-management/lib/entities/template/template.types.d.ts +0 -7
  664. package/notification-management/lib/entity.provider.d.ts +0 -10
  665. package/notification-management/lib/features/components/admin-notification-item/admin-notification-item.component.d.ts +0 -10
  666. package/notification-management/lib/features/components/admin-notification-panel/admin-notification-panel.component.d.ts +0 -41
  667. package/notification-management/lib/features/components/admin-notification-slot/admin-notification-slot.component.d.ts +0 -7
  668. package/notification-management/lib/features/dashboard/widgets/my-notification/index.d.ts +0 -2
  669. package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.component.d.ts +0 -82
  670. package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.config.d.ts +0 -5
  671. package/notification-management/lib/features/shared/notification-connector.service.d.ts +0 -57
  672. package/notification-management/lib/menu.provider.d.ts +0 -6
  673. package/notification-management/lib/notification-management.module.d.ts +0 -8
  674. package/notification-management/lib/notification-management.type.d.ts +0 -45
  675. package/notification-management/lib/settings.keys.d.ts +0 -17
  676. package/notification-management/lib/settings.provider.d.ts +0 -8
  677. package/organization-management/lib/const.d.ts +0 -125
  678. package/organization-management/lib/entities/branch/branch.entity.d.ts +0 -3
  679. package/organization-management/lib/entities/branch/branch.module.d.ts +0 -6
  680. package/organization-management/lib/entities/branch/branch.service.d.ts +0 -10
  681. package/organization-management/lib/entities/branch/branch.types.d.ts +0 -11
  682. package/organization-management/lib/entities/branch/index.d.ts +0 -3
  683. package/organization-management/lib/entities/chart/chart.entity.d.ts +0 -3
  684. package/organization-management/lib/entities/chart/chart.module.d.ts +0 -6
  685. package/organization-management/lib/entities/chart/chart.service.d.ts +0 -10
  686. package/organization-management/lib/entities/chart/chart.types.d.ts +0 -21
  687. package/organization-management/lib/entities/chart/index.d.ts +0 -3
  688. package/organization-management/lib/entities/company/company.entity.d.ts +0 -3
  689. package/organization-management/lib/entities/company/company.module.d.ts +0 -6
  690. package/organization-management/lib/entities/company/company.service.d.ts +0 -10
  691. package/organization-management/lib/entities/company/company.types.d.ts +0 -4
  692. package/organization-management/lib/entities/company/index.d.ts +0 -3
  693. package/organization-management/lib/entities/department/department.entity.d.ts +0 -3
  694. package/organization-management/lib/entities/department/department.module.d.ts +0 -6
  695. package/organization-management/lib/entities/department/department.service.d.ts +0 -10
  696. package/organization-management/lib/entities/department/department.types.d.ts +0 -10
  697. package/organization-management/lib/entities/department/index.d.ts +0 -3
  698. package/organization-management/lib/entities/division/division.entity.d.ts +0 -3
  699. package/organization-management/lib/entities/division/division.module.d.ts +0 -6
  700. package/organization-management/lib/entities/division/division.service.d.ts +0 -10
  701. package/organization-management/lib/entities/division/division.types.d.ts +0 -10
  702. package/organization-management/lib/entities/division/index.d.ts +0 -3
  703. package/organization-management/lib/entities/employee/employee.entity.d.ts +0 -3
  704. package/organization-management/lib/entities/employee/employee.module.d.ts +0 -6
  705. package/organization-management/lib/entities/employee/employee.service.d.ts +0 -10
  706. package/organization-management/lib/entities/employee/employee.types.d.ts +0 -15
  707. package/organization-management/lib/entities/employee/index.d.ts +0 -3
  708. package/organization-management/lib/entities/employment-type/employment-type.entity.d.ts +0 -3
  709. package/organization-management/lib/entities/employment-type/employment-type.module.d.ts +0 -6
  710. package/organization-management/lib/entities/employment-type/employment-type.service.d.ts +0 -10
  711. package/organization-management/lib/entities/employment-type/employment-type.types.d.ts +0 -5
  712. package/organization-management/lib/entities/employment-type/index.d.ts +0 -3
  713. package/organization-management/lib/entities/index.d.ts +0 -16
  714. package/organization-management/lib/entities/position/index.d.ts +0 -3
  715. package/organization-management/lib/entities/position/position.entity.d.ts +0 -3
  716. package/organization-management/lib/entities/position/position.module.d.ts +0 -6
  717. package/organization-management/lib/entities/position/position.service.d.ts +0 -10
  718. package/organization-management/lib/entities/position/position.types.d.ts +0 -10
  719. package/organization-management/lib/entities/position-category/index.d.ts +0 -3
  720. package/organization-management/lib/entities/position-category/position-category.entity.d.ts +0 -3
  721. package/organization-management/lib/entities/position-category/position-category.module.d.ts +0 -6
  722. package/organization-management/lib/entities/position-category/position-category.service.d.ts +0 -10
  723. package/organization-management/lib/entities/position-category/position-category.types.d.ts +0 -7
  724. package/organization-management/lib/entities/responsibility/index.d.ts +0 -3
  725. package/organization-management/lib/entities/responsibility/responsibility.entity.d.ts +0 -3
  726. package/organization-management/lib/entities/responsibility/responsibility.module.d.ts +0 -7
  727. package/organization-management/lib/entities/responsibility/responsibility.service.d.ts +0 -10
  728. package/organization-management/lib/entities/responsibility/responsibility.types.d.ts +0 -6
  729. package/organization-management/lib/entities/responsibility-category/index.d.ts +0 -3
  730. package/organization-management/lib/entities/responsibility-category/responsibility-category.entity.d.ts +0 -3
  731. package/organization-management/lib/entities/responsibility-category/responsibility-category.module.d.ts +0 -7
  732. package/organization-management/lib/entities/responsibility-category/responsibility-category.service.d.ts +0 -10
  733. package/organization-management/lib/entities/responsibility-category/responsibility-category.types.d.ts +0 -7
  734. package/organization-management/lib/entities/role/index.d.ts +0 -3
  735. package/organization-management/lib/entities/role/role.entity.d.ts +0 -3
  736. package/organization-management/lib/entities/role/role.module.d.ts +0 -6
  737. package/organization-management/lib/entities/role/role.service.d.ts +0 -10
  738. package/organization-management/lib/entities/role/role.types.d.ts +0 -8
  739. package/organization-management/lib/entities/role-category/index.d.ts +0 -3
  740. package/organization-management/lib/entities/role-category/role-category.entity.d.ts +0 -3
  741. package/organization-management/lib/entities/role-category/role-category.module.d.ts +0 -6
  742. package/organization-management/lib/entities/role-category/role-category.service.d.ts +0 -10
  743. package/organization-management/lib/entities/role-category/role-category.types.d.ts +0 -7
  744. package/organization-management/lib/entities/skill/index.d.ts +0 -3
  745. package/organization-management/lib/entities/skill/skill.entity.d.ts +0 -3
  746. package/organization-management/lib/entities/skill/skill.module.d.ts +0 -6
  747. package/organization-management/lib/entities/skill/skill.service.d.ts +0 -10
  748. package/organization-management/lib/entities/skill/skill.types.d.ts +0 -6
  749. package/organization-management/lib/entities/skill-category/index.d.ts +0 -3
  750. package/organization-management/lib/entities/skill-category/skill-category.entity.d.ts +0 -3
  751. package/organization-management/lib/entities/skill-category/skill-category.module.d.ts +0 -6
  752. package/organization-management/lib/entities/skill-category/skill-category.service.d.ts +0 -10
  753. package/organization-management/lib/entities/skill-category/skill-category.types.d.ts +0 -7
  754. package/organization-management/lib/entities/team/index.d.ts +0 -3
  755. package/organization-management/lib/entities/team/team.entity.d.ts +0 -3
  756. package/organization-management/lib/entities/team/team.module.d.ts +0 -6
  757. package/organization-management/lib/entities/team/team.service.d.ts +0 -10
  758. package/organization-management/lib/entities/team/team.types.d.ts +0 -8
  759. package/organization-management/lib/entity.provider.d.ts +0 -10
  760. package/organization-management/lib/features/employee/employee-feature.module.d.ts +0 -9
  761. package/organization-management/lib/features/index.d.ts +0 -1
  762. package/organization-management/lib/features/organization-chart/add-item/add-item.component.d.ts +0 -23
  763. package/organization-management/lib/features/organization-chart/index.d.ts +0 -1
  764. package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +0 -145
  765. package/organization-management/lib/features/organization-chart/org-chart-configuration.service.d.ts +0 -21
  766. package/organization-management/lib/features/organization-chart/org-chart-print.service.d.ts +0 -45
  767. package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +0 -239
  768. package/organization-management/lib/features/organization-chart/org-chart.service.d.ts +0 -66
  769. package/organization-management/lib/features/organization-chart/org-chart.type.d.ts +0 -46
  770. package/organization-management/lib/menu.provider.d.ts +0 -6
  771. package/organization-management/lib/organization-management.module.d.ts +0 -24
  772. package/organization-management/lib/settings.keys.d.ts +0 -17
  773. package/organization-management/lib/settings.provider.d.ts +0 -9
  774. package/platform-management/lib/const.d.ts +0 -61
  775. package/platform-management/lib/entities/app-term/app-term.entity.d.ts +0 -3
  776. package/platform-management/lib/entities/app-term/app-term.service.d.ts +0 -10
  777. package/platform-management/lib/entities/app-term/app-term.types.d.ts +0 -19
  778. package/platform-management/lib/entities/app-term/index.d.ts +0 -5
  779. package/platform-management/lib/entities/app-version/app-version.entity.d.ts +0 -3
  780. package/platform-management/lib/entities/app-version/app-version.service.d.ts +0 -10
  781. package/platform-management/lib/entities/app-version/app-version.types.d.ts +0 -13
  782. package/platform-management/lib/entities/app-version/index.d.ts +0 -5
  783. package/platform-management/lib/entities/data-source/coulmn-def.widget.d.ts +0 -68
  784. package/platform-management/lib/entities/data-source/data-source.entity.d.ts +0 -3
  785. package/platform-management/lib/entities/data-source/data-source.service.d.ts +0 -10
  786. package/platform-management/lib/entities/data-source/data-source.types.d.ts +0 -7
  787. package/platform-management/lib/entities/data-source/datasource-provider.dynamic.d.ts +0 -10
  788. package/platform-management/lib/entities/data-source/index.d.ts +0 -3
  789. package/platform-management/lib/entities/global-variable/global-variable.entity.d.ts +0 -3
  790. package/platform-management/lib/entities/global-variable/global-variables.service.d.ts +0 -10
  791. package/platform-management/lib/entities/global-variable/global-variables.types.d.ts +0 -7
  792. package/platform-management/lib/entities/global-variable/index.d.ts +0 -3
  793. package/platform-management/lib/entities/glossary/glossary.entity.d.ts +0 -3
  794. package/platform-management/lib/entities/glossary/glossary.service.d.ts +0 -10
  795. package/platform-management/lib/entities/glossary/glossary.types.d.ts +0 -4
  796. package/platform-management/lib/entities/glossary/index.d.ts +0 -3
  797. package/platform-management/lib/entities/index.d.ts +0 -7
  798. package/platform-management/lib/entities/meta-data-definition/index.d.ts +0 -3
  799. package/platform-management/lib/entities/meta-data-definition/meta-data-definition.entity.d.ts +0 -3
  800. package/platform-management/lib/entities/meta-data-definition/meta-data-definition.service.d.ts +0 -10
  801. package/platform-management/lib/entities/meta-data-definition/meta-data-definition.types.d.ts +0 -7
  802. package/platform-management/lib/entities/meta-data-definition-category/category.entity.d.ts +0 -3
  803. package/platform-management/lib/entities/meta-data-definition-category/category.service.d.ts +0 -10
  804. package/platform-management/lib/entities/meta-data-definition-category/category.types.d.ts +0 -7
  805. package/platform-management/lib/entities/meta-data-definition-category/index.d.ts +0 -3
  806. package/platform-management/lib/entity.provider.d.ts +0 -10
  807. package/platform-management/lib/features/app-terms/check-terms.service.d.ts +0 -11
  808. package/platform-management/lib/features/app-terms/components/notify-app/notify-app.component.d.ts +0 -14
  809. package/platform-management/lib/features/app-terms/pages/index.d.ts +0 -1
  810. package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +0 -17
  811. package/platform-management/lib/features/app-terms/settings.keys.d.ts +0 -3
  812. package/platform-management/lib/features/app-terms/workflows/index.d.ts +0 -1
  813. package/platform-management/lib/features/app-terms/workflows/notify-new-term.workflow.d.ts +0 -15
  814. package/platform-management/lib/features/app-version/check-version.service.d.ts +0 -10
  815. package/platform-management/lib/features/app-version/components/index.d.ts +0 -2
  816. package/platform-management/lib/features/app-version/components/list-versions/list-version.component.d.ts +0 -14
  817. package/platform-management/lib/features/app-version/components/notify-app/notify-app.component.d.ts +0 -14
  818. package/platform-management/lib/features/app-version/components/slots/app-version-slot.component.d.ts +0 -12
  819. package/platform-management/lib/features/app-version/workflows/change-log.workflow.d.ts +0 -23
  820. package/platform-management/lib/features/app-version/workflows/index.d.ts +0 -1
  821. package/platform-management/lib/features/app-version/workflows/show-release-notes.workflow.d.ts +0 -9
  822. package/platform-management/lib/features/common/common.module.d.ts +0 -10
  823. package/platform-management/lib/features/common/index.d.ts +0 -2
  824. package/platform-management/lib/features/common/regional/data-source.provider.d.ts +0 -10
  825. package/platform-management/lib/features/common/regional/index.d.ts +0 -1
  826. package/platform-management/lib/features/common/regional/language-slot/language-slot.component.d.ts +0 -20
  827. package/platform-management/lib/features/common/regional/regional-store.service.d.ts +0 -11
  828. package/platform-management/lib/features/common/regional/settings.keys.d.ts +0 -20
  829. package/platform-management/lib/features/common/regional/settings.provider.d.ts +0 -10
  830. package/platform-management/lib/features/release-notes/settings.keys.d.ts +0 -3
  831. package/platform-management/lib/features/release-notes/settings.provider.d.ts +0 -11
  832. package/platform-management/lib/features/updater/index.d.ts +0 -2
  833. package/platform-management/lib/features/updater/updater.module.d.ts +0 -9
  834. package/platform-management/lib/features/updater/updater.service.d.ts +0 -6
  835. package/platform-management/lib/menu.provider.d.ts +0 -6
  836. package/platform-management/lib/platform-management.module.d.ts +0 -16
  837. package/platform-management/lib/task-board.provider.d.ts +0 -14
  838. package/project-management/lib/const.d.ts +0 -85
  839. package/project-management/lib/entities/client/client.entity.d.ts +0 -3
  840. package/project-management/lib/entities/client/client.service.d.ts +0 -10
  841. package/project-management/lib/entities/client/client.types.d.ts +0 -7
  842. package/project-management/lib/entities/client/index.d.ts +0 -3
  843. package/project-management/lib/entities/index.d.ts +0 -12
  844. package/project-management/lib/entities/project/index.d.ts +0 -3
  845. package/project-management/lib/entities/project/project.entity.d.ts +0 -3
  846. package/project-management/lib/entities/project/project.service.d.ts +0 -10
  847. package/project-management/lib/entities/project/project.types.d.ts +0 -11
  848. package/project-management/lib/entities/project-memeber/index.d.ts +0 -3
  849. package/project-management/lib/entities/project-memeber/project-memeber.entity.d.ts +0 -3
  850. package/project-management/lib/entities/project-memeber/project-memeber.service.d.ts +0 -10
  851. package/project-management/lib/entities/project-memeber/project-memeber.types.d.ts +0 -7
  852. package/project-management/lib/entities/project-role-member/index.d.ts +0 -3
  853. package/project-management/lib/entities/project-role-member/project-role-member.entity.d.ts +0 -3
  854. package/project-management/lib/entities/project-role-member/project-role-member.service.d.ts +0 -10
  855. package/project-management/lib/entities/project-role-member/project-role-member.types.d.ts +0 -5
  856. package/project-management/lib/entities/project-type/index.d.ts +0 -3
  857. package/project-management/lib/entities/project-type/project-type.entity.d.ts +0 -3
  858. package/project-management/lib/entities/project-type/project-type.service.d.ts +0 -10
  859. package/project-management/lib/entities/project-type/project-type.types.d.ts +0 -4
  860. package/project-management/lib/entities/sprint/index.d.ts +0 -3
  861. package/project-management/lib/entities/sprint/sprint.entity.d.ts +0 -3
  862. package/project-management/lib/entities/sprint/sprint.service.d.ts +0 -10
  863. package/project-management/lib/entities/sprint/sprint.types.d.ts +0 -8
  864. package/project-management/lib/entities/sprint-task/index.d.ts +0 -3
  865. package/project-management/lib/entities/sprint-task/sprint-task.entity.d.ts +0 -3
  866. package/project-management/lib/entities/sprint-task/sprint-task.service.d.ts +0 -10
  867. package/project-management/lib/entities/sprint-task/sprint-task.types.d.ts +0 -5
  868. package/project-management/lib/entities/task/index.d.ts +0 -3
  869. package/project-management/lib/entities/task/task.entity.d.ts +0 -3
  870. package/project-management/lib/entities/task/task.service.d.ts +0 -10
  871. package/project-management/lib/entities/task/task.types.d.ts +0 -19
  872. package/project-management/lib/entities/task-history/index.d.ts +0 -3
  873. package/project-management/lib/entities/task-history/task-history.entity.d.ts +0 -3
  874. package/project-management/lib/entities/task-history/task-history.service.d.ts +0 -10
  875. package/project-management/lib/entities/task-history/task-history.types.d.ts +0 -8
  876. package/project-management/lib/entities/task-type/index.d.ts +0 -3
  877. package/project-management/lib/entities/task-type/task-type.entity.d.ts +0 -3
  878. package/project-management/lib/entities/task-type/task-type.service.d.ts +0 -10
  879. package/project-management/lib/entities/task-type/task-type.types.d.ts +0 -6
  880. package/project-management/lib/entities/time-sheet/index.d.ts +0 -3
  881. package/project-management/lib/entities/time-sheet/time-sheet.entity.d.ts +0 -3
  882. package/project-management/lib/entities/time-sheet/time-sheet.service.d.ts +0 -10
  883. package/project-management/lib/entities/time-sheet/time-sheet.types.d.ts +0 -8
  884. package/project-management/lib/entities/work-site/index.d.ts +0 -3
  885. package/project-management/lib/entities/work-site/work-site.entity.d.ts +0 -3
  886. package/project-management/lib/entities/work-site/work-site.service.d.ts +0 -10
  887. package/project-management/lib/entities/work-site/work-site.types.d.ts +0 -8
  888. package/project-management/lib/entity.provider.d.ts +0 -10
  889. package/project-management/lib/menu.provider.d.ts +0 -5
  890. package/project-management/lib/project-management.module.d.ts +0 -6
  891. package/project-management/lib/search-command.provider.d.ts +0 -4
  892. package/project-management/lib/setting.provider.d.ts +0 -4
  893. package/project-management/lib/task-board.provider.d.ts +0 -14
  894. package/scheduler-job-management/lib/const.d.ts +0 -18
  895. package/scheduler-job-management/lib/entities/index.d.ts +0 -1
  896. package/scheduler-job-management/lib/entities/scheduler-job/index.d.ts +0 -4
  897. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.d.ts +0 -3
  898. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.d.ts +0 -6
  899. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +0 -10
  900. package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +0 -5
  901. package/scheduler-job-management/lib/entity.provider.d.ts +0 -9
  902. package/scheduler-job-management/lib/menu.provider.d.ts +0 -5
  903. package/scheduler-job-management/lib/scheduler-job-management.module.d.ts +0 -7
  904. package/security-management/lib/const.d.ts +0 -35
  905. package/security-management/lib/entities/device-sessions/device-sessions.entity.d.ts +0 -3
  906. package/security-management/lib/entities/device-sessions/device-sessions.module.d.ts +0 -6
  907. package/security-management/lib/entities/device-sessions/device-sessions.service.d.ts +0 -12
  908. package/security-management/lib/entities/device-sessions/device-sessions.types.d.ts +0 -34
  909. package/security-management/lib/entities/device-sessions/index.d.ts +0 -4
  910. package/security-management/lib/entities/index.d.ts +0 -5
  911. package/security-management/lib/entities/profile/index.d.ts +0 -3
  912. package/security-management/lib/entities/profile/profile.entity.d.ts +0 -3
  913. package/security-management/lib/entities/profile/profile.module.d.ts +0 -6
  914. package/security-management/lib/entities/profile/profile.types.d.ts +0 -5
  915. package/security-management/lib/entities/roles/index.d.ts +0 -4
  916. package/security-management/lib/entities/roles/roles.entity.d.ts +0 -3
  917. package/security-management/lib/entities/roles/roles.module.d.ts +0 -6
  918. package/security-management/lib/entities/roles/roles.service.d.ts +0 -10
  919. package/security-management/lib/entities/roles/roles.types.d.ts +0 -7
  920. package/security-management/lib/entities/users/index.d.ts +0 -4
  921. package/security-management/lib/entities/users/users.entity.d.ts +0 -3
  922. package/security-management/lib/entities/users/users.module.d.ts +0 -6
  923. package/security-management/lib/entities/users/users.service.d.ts +0 -10
  924. package/security-management/lib/entities/users/users.types.d.ts +0 -10
  925. package/security-management/lib/entity.provider.d.ts +0 -10
  926. package/security-management/lib/features/permissions/permissions-editor/permissions-editor.component.d.ts +0 -70
  927. package/security-management/lib/features/permissions/permissions-widget/permissions-widget-column.component.d.ts +0 -10
  928. package/security-management/lib/features/permissions/permissions-widget/permissions-widget-designer.component.d.ts +0 -6
  929. package/security-management/lib/features/permissions/permissions-widget/permissions-widget-edit.component.d.ts +0 -8
  930. package/security-management/lib/features/permissions/permissions-widget/permissions-widget-print.component.d.ts +0 -6
  931. package/security-management/lib/features/permissions/permissions-widget/permissions-widget-view.component.d.ts +0 -6
  932. package/security-management/lib/features/permissions/permissions-widget/permissions-widget.config.d.ts +0 -2
  933. package/security-management/lib/features/permissions/permissions.module.d.ts +0 -8
  934. package/security-management/lib/features/permissions/workflows/assign-permissions.workflow.d.ts +0 -10
  935. package/security-management/lib/menu.keys.d.ts +0 -6
  936. package/security-management/lib/menu.provider.d.ts +0 -5
  937. package/security-management/lib/search-command.provider.d.ts +0 -4
  938. package/security-management/lib/security-management.module.d.ts +0 -12
  939. package/security-management/lib/user-avatar.provider.d.ts +0 -5
  940. package/security-management/lib/workflows/terminate-entity.workflow.d.ts +0 -27
  941. package/settings-management/lib/features/settings/convert-setting-data.d.ts +0 -2
  942. package/settings-management/lib/features/settings/search-definition.provider.d.ts +0 -4
  943. package/settings-management/lib/features/settings/search.provider.d.ts +0 -9
  944. package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +0 -65
  945. package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +0 -135
  946. package/settings-management/lib/features/settings/settings.viewmodel.d.ts +0 -46
  947. package/settings-management/lib/settings-management.module.d.ts +0 -9
  948. package/text-template-management/lib/const.d.ts +0 -29
  949. package/text-template-management/lib/entities/category/category.entity.d.ts +0 -3
  950. package/text-template-management/lib/entities/category/category.module.d.ts +0 -6
  951. package/text-template-management/lib/entities/category/category.service.d.ts +0 -10
  952. package/text-template-management/lib/entities/category/category.types.d.ts +0 -5
  953. package/text-template-management/lib/entities/category/index.d.ts +0 -4
  954. package/text-template-management/lib/entities/index.d.ts +0 -3
  955. package/text-template-management/lib/entities/tag-template/index.d.ts +0 -3
  956. package/text-template-management/lib/entities/tag-template/tag-template.entity.d.ts +0 -3
  957. package/text-template-management/lib/entities/tag-template/tag-template.service.d.ts +0 -10
  958. package/text-template-management/lib/entities/tag-template/tag-template.types.d.ts +0 -5
  959. package/text-template-management/lib/entities/template/index.d.ts +0 -4
  960. package/text-template-management/lib/entities/template/template.entity.d.ts +0 -3
  961. package/text-template-management/lib/entities/template/template.module.d.ts +0 -6
  962. package/text-template-management/lib/entities/template/template.service.d.ts +0 -10
  963. package/text-template-management/lib/entities/template/template.types.d.ts +0 -9
  964. package/text-template-management/lib/entity.provider.d.ts +0 -10
  965. package/text-template-management/lib/menu.provider.d.ts +0 -5
  966. package/text-template-management/lib/settings.provider.d.ts +0 -4
  967. package/text-template-management/lib/text-template-management.module.d.ts +0 -8
  968. package/training-management/lib/const.d.ts +0 -85
  969. package/training-management/lib/entities/certificate/certificate.entity.d.ts +0 -3
  970. package/training-management/lib/entities/certificate/certificate.service.d.ts +0 -10
  971. package/training-management/lib/entities/certificate/certificate.types.d.ts +0 -12
  972. package/training-management/lib/entities/certificate/index.d.ts +0 -3
  973. package/training-management/lib/entities/course/course.entity.d.ts +0 -3
  974. package/training-management/lib/entities/course/course.service.d.ts +0 -10
  975. package/training-management/lib/entities/course/course.types.d.ts +0 -8
  976. package/training-management/lib/entities/course/index.d.ts +0 -3
  977. package/training-management/lib/entities/course-location/course-location.entity.d.ts +0 -3
  978. package/training-management/lib/entities/course-location/course-location.service.d.ts +0 -10
  979. package/training-management/lib/entities/course-location/course-location.types.d.ts +0 -6
  980. package/training-management/lib/entities/course-location/index.d.ts +0 -3
  981. package/training-management/lib/entities/course-period/course-period.entity.d.ts +0 -3
  982. package/training-management/lib/entities/course-period/course-period.service.d.ts +0 -10
  983. package/training-management/lib/entities/course-period/course-period.types.d.ts +0 -6
  984. package/training-management/lib/entities/course-period/index.d.ts +0 -3
  985. package/training-management/lib/entities/course-type/course-type.entity.d.ts +0 -3
  986. package/training-management/lib/entities/course-type/course-type.service.d.ts +0 -10
  987. package/training-management/lib/entities/course-type/course-type.types.d.ts +0 -5
  988. package/training-management/lib/entities/course-type/index.d.ts +0 -3
  989. package/training-management/lib/entities/facilitator-type/facilitator-type.entity.d.ts +0 -3
  990. package/training-management/lib/entities/facilitator-type/facilitator-type.service.d.ts +0 -10
  991. package/training-management/lib/entities/facilitator-type/facilitator-type.types.d.ts +0 -6
  992. package/training-management/lib/entities/facilitator-type/index.d.ts +0 -3
  993. package/training-management/lib/entities/index.d.ts +0 -12
  994. package/training-management/lib/entities/location/index.d.ts +0 -3
  995. package/training-management/lib/entities/location/location.entity.d.ts +0 -3
  996. package/training-management/lib/entities/location/location.service.d.ts +0 -10
  997. package/training-management/lib/entities/location/location.types.d.ts +0 -7
  998. package/training-management/lib/entities/period/index.d.ts +0 -3
  999. package/training-management/lib/entities/period/period.entity.d.ts +0 -3
  1000. package/training-management/lib/entities/period/period.service.d.ts +0 -10
  1001. package/training-management/lib/entities/period/period.types.d.ts +0 -6
  1002. package/training-management/lib/entities/training/index.d.ts +0 -3
  1003. package/training-management/lib/entities/training/training.entity.d.ts +0 -3
  1004. package/training-management/lib/entities/training/training.service.d.ts +0 -10
  1005. package/training-management/lib/entities/training/training.types.d.ts +0 -13
  1006. package/training-management/lib/entities/training-facilitator/index.d.ts +0 -3
  1007. package/training-management/lib/entities/training-facilitator/training-facilitator.entity.d.ts +0 -3
  1008. package/training-management/lib/entities/training-facilitator/training-facilitator.service.d.ts +0 -10
  1009. package/training-management/lib/entities/training-facilitator/training-facilitator.types.d.ts +0 -7
  1010. package/training-management/lib/entities/training-participant/index.d.ts +0 -3
  1011. package/training-management/lib/entities/training-participant/training-participant.entity.d.ts +0 -3
  1012. package/training-management/lib/entities/training-participant/training-participant.service.d.ts +0 -10
  1013. package/training-management/lib/entities/training-participant/training-participant.types.d.ts +0 -7
  1014. package/training-management/lib/entities/training-type/index.d.ts +0 -3
  1015. package/training-management/lib/entities/training-type/training-type.entity.d.ts +0 -3
  1016. package/training-management/lib/entities/training-type/training-type.service.d.ts +0 -10
  1017. package/training-management/lib/entities/training-type/training-type.types.d.ts +0 -7
  1018. package/training-management/lib/entity.provider.d.ts +0 -10
  1019. package/training-management/lib/menu.provider.d.ts +0 -5
  1020. package/training-management/lib/permission-definition.provider.d.ts +0 -4
  1021. package/training-management/lib/search-command.provider.d.ts +0 -4
  1022. package/training-management/lib/setting.provider.d.ts +0 -4
  1023. package/training-management/lib/training-management.module.d.ts +0 -6
  1024. package/workflow-management/lib/const.d.ts +0 -11
  1025. package/workflow-management/lib/features/task-board/index.d.ts +0 -2
  1026. package/workflow-management/lib/features/task-board/settings.keys.d.ts +0 -5
  1027. package/workflow-management/lib/features/task-board/task-board.module.d.ts +0 -6
  1028. package/workflow-management/lib/features/task-board/task-board.page.d.ts +0 -76
  1029. package/workflow-management/lib/features/task-board/task-board.service.d.ts +0 -13
  1030. package/workflow-management/lib/features/task-board/task-board.viewmodel.d.ts +0 -20
  1031. package/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.page.d.ts +0 -25
  1032. package/workflow-management/lib/workflow-management.module.d.ts +0 -8
@@ -1,11 +1,11 @@
1
1
  import { AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
2
- import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXP_HOME_PAGES, AXP_MENU_PROVIDER, AXP_HOME_PAGE_DEFAULT_KEY, AXPSettingService } from '@acorex/platform/common';
3
- import * as i3$1 from '@acorex/platform/layout/builder';
4
- import { AXPWidgetsCatalog, AXPValueWidgetComponent, cloneProperty, AXPWidgetGroupEnum, AXPLayoutWidgetComponent, AXPLayoutBuilderModule, AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';
2
+ import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPRegionalService, AXP_HOME_PAGES, AXP_MENU_PROVIDER, AXP_HOME_PAGE_DEFAULT_KEY, AXPSettingService } from '@acorex/platform/common';
3
+ import * as i3$2 from '@acorex/platform/layout/builder';
4
+ import { AXPWidgetsCatalog, AXPLayoutWidgetComponent, AXPWidgetGroupEnum, AXPValueWidgetComponent, cloneProperty, AXPLayoutBuilderModule, AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';
5
5
  import { AXMEntityCrudServiceImpl, AXPEntityService, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
6
- import { AXP_APPEARANCE_PROPERTY_GROUP, AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BG_COLOR_PROPERTY, plainTextDefaultProperty, AXP_DATA_PROPERTY_GROUP, AXP_COLOR_PROPERTY, AXPWidgetsModule } from '@acorex/platform/widgets';
6
+ import { AXP_DATA_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BG_COLOR_PROPERTY, plainTextDefaultProperty, AXP_COLOR_PROPERTY, AXPWidgetsModule } from '@acorex/platform/widgets';
7
7
  import * as i0 from '@angular/core';
8
- import { Injectable, inject, Injector, computed, ChangeDetectionStrategy, Component, ChangeDetectorRef, signal, viewChild, ElementRef, HostListener, output, InjectionToken, effect, HostBinding, NgModule, input, contentChild, afterNextRender, model, ViewEncapsulation } from '@angular/core';
8
+ import { Injectable, inject, Injector, input, signal, computed, effect, ChangeDetectionStrategy, Component, ChangeDetectorRef, viewChild, ElementRef, HostListener, output, InjectionToken, HostBinding, NgModule, contentChild, afterNextRender, model, ViewEncapsulation } from '@angular/core';
9
9
  import { AXBarChartComponent } from '@acorex/charts/bar-chart';
10
10
  import * as i2$2 from '@acorex/components/decorators';
11
11
  import { AXDecoratorModule } from '@acorex/components/decorators';
@@ -15,7 +15,7 @@ import * as i2 from '@acorex/core/format';
15
15
  import { AXFormatModule } from '@acorex/core/format';
16
16
  import * as i1 from '@angular/common';
17
17
  import { CommonModule, DatePipe } from '@angular/common';
18
- import { interval, map, Observable, catchError, throwError, switchMap, firstValueFrom } from 'rxjs';
18
+ import { interval, map, Observable, catchError, throwError, of, finalize, switchMap, firstValueFrom } from 'rxjs';
19
19
  import { AXDonutChartComponent } from '@acorex/charts/donut-chart';
20
20
  import { AXGaugeChartComponent } from '@acorex/charts/gauge-chart';
21
21
  import { AXLineChartComponent } from '@acorex/charts/line-chart';
@@ -38,8 +38,11 @@ import { AXCheckBoxModule } from '@acorex/components/check-box';
38
38
  import { AXImageModule } from '@acorex/components/image';
39
39
  import { AXLabelModule } from '@acorex/components/label';
40
40
  import { AXTabsModule } from '@acorex/components/tabs';
41
- import * as i2$3 from '@acorex/core/translation';
41
+ import * as i3$1 from '@acorex/core/translation';
42
42
  import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
43
+ import * as i2$3 from '@acorex/components/skeleton';
44
+ import { AXSkeletonModule } from '@acorex/components/skeleton';
45
+ import { AXTooltipModule } from '@acorex/components/tooltip';
43
46
  import { HttpClient, HttpClientModule } from '@angular/common/http';
44
47
  import { AXPopupService } from '@acorex/components/popup';
45
48
  import { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/modules/common';
@@ -49,7 +52,7 @@ import { ActivatedRoute, Router } from '@angular/router';
49
52
  import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
50
53
  import { AXButtonGroupModule } from '@acorex/components/button-group';
51
54
  import { AXDialogService } from '@acorex/components/dialog';
52
- import * as i3$2 from '@acorex/components/dropdown';
55
+ import * as i3$3 from '@acorex/components/dropdown';
53
56
  import { AXDropdownModule } from '@acorex/components/dropdown';
54
57
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
55
58
  import { AXPWidgetPropertyViewerComponent, AXPWidgetPickerService, AXPDesignerService } from '@acorex/platform/layout/designer';
@@ -64,7 +67,7 @@ import * as i7 from '@acorex/components/select-box';
64
67
  import { AXSelectBoxModule } from '@acorex/components/select-box';
65
68
  import * as i8 from '@acorex/components/switch';
66
69
  import { AXSwitchModule } from '@acorex/components/switch';
67
- import * as i3$3 from '@acorex/components/text-box';
70
+ import * as i3$4 from '@acorex/components/text-box';
68
71
  import { AXTextBoxModule } from '@acorex/components/text-box';
69
72
  import { AXMOrganizationManagementRoleEntityService } from '@acorex/modules/organization-management';
70
73
 
@@ -95,10 +98,10 @@ class AXMDashboardServiceImpl extends AXMDashboardService {
95
98
  constructor() {
96
99
  super(`${RootConfig.module.name}.${RootConfig.entities.dashboard.name}`);
97
100
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
99
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardServiceImpl }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
102
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardServiceImpl }); }
100
103
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardServiceImpl, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardServiceImpl, decorators: [{
102
105
  type: Injectable
103
106
  }], ctorParameters: () => [] });
104
107
 
@@ -442,13 +445,425 @@ class AXMEntityProvider {
442
445
  }
443
446
  return null;
444
447
  }
445
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
446
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMEntityProvider }); }
448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
449
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMEntityProvider }); }
447
450
  }
448
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMEntityProvider, decorators: [{
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMEntityProvider, decorators: [{
449
452
  type: Injectable
450
453
  }] });
451
454
 
455
+ class AXMAnalogClockComponent {
456
+ constructor() {
457
+ this.timezone = input();
458
+ this.classes = input();
459
+ this.showNumbers = input(true);
460
+ this.currentTime = signal(new Date());
461
+ this.timeParts = signal({ hours: 0, minutes: 0, seconds: 0 });
462
+ this.hourHandTransform = computed(() => {
463
+ const { hours, minutes } = this.timeParts();
464
+ const hoursAngle = (hours % 12) * 30 + minutes * 0.5;
465
+ return `translateX(-50%) rotate(${hoursAngle}deg)`;
466
+ });
467
+ this.minuteHandTransform = computed(() => {
468
+ const { minutes, seconds } = this.timeParts();
469
+ const minutesAngle = minutes * 6 + seconds * 0.1;
470
+ return `translateX(-50%) rotate(${minutesAngle}deg)`;
471
+ });
472
+ this.secondHandTransform = computed(() => {
473
+ const { seconds } = this.timeParts();
474
+ const secondsAngle = seconds * 6;
475
+ return `translateX(-50%) rotate(${secondsAngle}deg)`;
476
+ });
477
+ this.hourLines = [];
478
+ this.hourNumbers = [];
479
+ this.dots = [];
480
+ effect(() => {
481
+ const now = this.currentTime();
482
+ const tz = this.timezone();
483
+ let hours, minutes, seconds;
484
+ if (tz) {
485
+ try {
486
+ const formatter = new Intl.DateTimeFormat('en-US', {
487
+ timeZone: tz,
488
+ hour12: false,
489
+ hour: 'numeric',
490
+ minute: 'numeric',
491
+ second: 'numeric',
492
+ });
493
+ const parts = formatter.formatToParts(now);
494
+ hours = parseInt(parts.find((p) => p.type === 'hour')?.value ?? '0', 10);
495
+ minutes = parseInt(parts.find((p) => p.type === 'minute')?.value ?? '0', 10);
496
+ seconds = parseInt(parts.find((p) => p.type === 'second')?.value ?? '0', 10);
497
+ }
498
+ catch (e) {
499
+ console.error(`Invalid timezone provided: "${tz}". Falling back to local time.`);
500
+ hours = now.getHours();
501
+ minutes = now.getMinutes();
502
+ seconds = now.getSeconds();
503
+ }
504
+ }
505
+ else {
506
+ hours = now.getHours();
507
+ minutes = now.getMinutes();
508
+ seconds = now.getSeconds();
509
+ }
510
+ this.timeParts.set({ hours, minutes, seconds });
511
+ });
512
+ }
513
+ ngOnInit() {
514
+ this.createClockMarks();
515
+ this.timerId = window.setInterval(() => {
516
+ this.currentTime.set(new Date());
517
+ }, 1000);
518
+ }
519
+ ngOnDestroy() {
520
+ if (this.timerId) {
521
+ clearInterval(this.timerId);
522
+ }
523
+ }
524
+ createClockMarks() {
525
+ const majorHours = [12, 3, 6, 9];
526
+ // Hour Lines
527
+ this.hourLines = [];
528
+ for (let i = 1; i <= 12; i++) {
529
+ this.hourLines.push({
530
+ transform: `translateX(-50%) rotate(${i * 30}deg)`,
531
+ });
532
+ }
533
+ // Hour Numbers
534
+ this.hourNumbers = [];
535
+ for (const hour of majorHours) {
536
+ const angleRad = (hour * 30 - 90) * (Math.PI / 180);
537
+ this.hourNumbers.push({
538
+ value: hour,
539
+ top: `calc(50% + ${30 * Math.sin(angleRad)}%)`,
540
+ left: `calc(50% + ${30 * Math.cos(angleRad)}%)`,
541
+ });
542
+ }
543
+ // Dots
544
+ this.dots = [];
545
+ for (let i = 1; i <= 60; i++) {
546
+ if (i % 5 !== 0) {
547
+ this.dots.push({
548
+ transform: `translateX(-50%) rotate(${i * 6}deg)`,
549
+ });
550
+ }
551
+ }
552
+ }
553
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAnalogClockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
554
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMAnalogClockComponent, isStandalone: true, selector: "axm-analog-clock", inputs: { timezone: { classPropertyName: "timezone", publicName: "timezone", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: "classes", publicName: "classes", isSignal: true, isRequired: false, transformFunction: null }, showNumbers: { classPropertyName: "showNumbers", publicName: "showNumbers", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
555
+ <div class="axm-analog-clock-container">
556
+ <div class="axm-analog-clock-face" [class]="classes()">
557
+ <div class="axm-analog-clock-marks-container">
558
+ @for (line of hourLines; track $index) {
559
+ <div class="axm-analog-clock-hour-line" [style.transform]="line.transform">
560
+ <div class="axm-analog-clock-hour-line-inner"></div>
561
+ </div>
562
+ }
563
+ @for (dot of dots; track $index) {
564
+ <div class="axm-analog-clock-dot-line" [style.transform]="dot.transform">
565
+ <div class="axm-analog-clock-dot-line-inner"></div>
566
+ </div>
567
+ }
568
+ </div>
569
+
570
+ @if (showNumbers()) {
571
+ <div class="axm-analog-clock-numbers-container">
572
+ @for (num of hourNumbers; track num.value) {
573
+ <div class="axm-analog-clock-hour-number" [style.top]="num.top" [style.left]="num.left">
574
+ {{ num.value }}
575
+ </div>
576
+ }
577
+ </div>
578
+ }
579
+ <div class="axm-analog-clock-hands">
580
+ <div class="axm-analog-clock-hand axm-analog-clock-hour-hand" [style.transform]="hourHandTransform()"></div>
581
+ <div
582
+ class="axm-analog-clock-hand axm-analog-clock-minute-hand"
583
+ [style.transform]="minuteHandTransform()"
584
+ ></div>
585
+ <div
586
+ class="axm-analog-clock-hand axm-analog-clock-second-hand"
587
+ [style.transform]="secondHandTransform()"
588
+ ></div>
589
+ <div class="axm-analog-clock-center-point"></div>
590
+ </div>
591
+ </div>
592
+ </div>
593
+ `, isInline: true, styles: [":host{display:grid;width:100%;height:100%;place-items:center}.axm-analog-clock-container{position:relative;max-height:100%;width:100%;aspect-ratio:1;container-type:inline-size}.axm-analog-clock-face{position:relative;height:100%;width:100%;border-radius:9999px}.axm-analog-clock-marks-container,.axm-analog-clock-numbers-container,.axm-analog-clock-hands{position:absolute;top:0;right:0;bottom:0;left:0}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{position:absolute;bottom:50%;left:50%;height:50%;transform-origin:bottom}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{width:1.8cqw}.axm-analog-clock-hour-line-inner{position:absolute;top:6cqw;left:50%;height:5.5cqw;width:100%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner{position:absolute;top:6cqw;left:50%;height:2cqw;width:1.2cqw;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-number{position:absolute;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:10cqw;font-weight:500;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.axm-analog-clock-hand{position:absolute;bottom:50%;left:50%;transform-origin:bottom;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.axm-analog-clock-hand:after{content:\"\";position:absolute;left:0;width:100%}.axm-analog-clock-hour-hand{z-index:20;height:25%;width:2.7cqw;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand{z-index:30;height:35%;width:2.1cqw;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand{z-index:40;height:42%;width:1.5cqw;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-center-point{position:absolute;top:50%;left:50%;z-index:50;height:9cqw;width:9cqw;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;border-width:1.8cqw;--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
594
+ }
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAnalogClockComponent, decorators: [{
596
+ type: Component,
597
+ args: [{ selector: 'axm-analog-clock', standalone: true, imports: [], template: `
598
+ <div class="axm-analog-clock-container">
599
+ <div class="axm-analog-clock-face" [class]="classes()">
600
+ <div class="axm-analog-clock-marks-container">
601
+ @for (line of hourLines; track $index) {
602
+ <div class="axm-analog-clock-hour-line" [style.transform]="line.transform">
603
+ <div class="axm-analog-clock-hour-line-inner"></div>
604
+ </div>
605
+ }
606
+ @for (dot of dots; track $index) {
607
+ <div class="axm-analog-clock-dot-line" [style.transform]="dot.transform">
608
+ <div class="axm-analog-clock-dot-line-inner"></div>
609
+ </div>
610
+ }
611
+ </div>
612
+
613
+ @if (showNumbers()) {
614
+ <div class="axm-analog-clock-numbers-container">
615
+ @for (num of hourNumbers; track num.value) {
616
+ <div class="axm-analog-clock-hour-number" [style.top]="num.top" [style.left]="num.left">
617
+ {{ num.value }}
618
+ </div>
619
+ }
620
+ </div>
621
+ }
622
+ <div class="axm-analog-clock-hands">
623
+ <div class="axm-analog-clock-hand axm-analog-clock-hour-hand" [style.transform]="hourHandTransform()"></div>
624
+ <div
625
+ class="axm-analog-clock-hand axm-analog-clock-minute-hand"
626
+ [style.transform]="minuteHandTransform()"
627
+ ></div>
628
+ <div
629
+ class="axm-analog-clock-hand axm-analog-clock-second-hand"
630
+ [style.transform]="secondHandTransform()"
631
+ ></div>
632
+ <div class="axm-analog-clock-center-point"></div>
633
+ </div>
634
+ </div>
635
+ </div>
636
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:grid;width:100%;height:100%;place-items:center}.axm-analog-clock-container{position:relative;max-height:100%;width:100%;aspect-ratio:1;container-type:inline-size}.axm-analog-clock-face{position:relative;height:100%;width:100%;border-radius:9999px}.axm-analog-clock-marks-container,.axm-analog-clock-numbers-container,.axm-analog-clock-hands{position:absolute;top:0;right:0;bottom:0;left:0}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{position:absolute;bottom:50%;left:50%;height:50%;transform-origin:bottom}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{width:1.8cqw}.axm-analog-clock-hour-line-inner{position:absolute;top:6cqw;left:50%;height:5.5cqw;width:100%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner{position:absolute;top:6cqw;left:50%;height:2cqw;width:1.2cqw;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-number{position:absolute;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:10cqw;font-weight:500;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.axm-analog-clock-hand{position:absolute;bottom:50%;left:50%;transform-origin:bottom;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.axm-analog-clock-hand:after{content:\"\";position:absolute;left:0;width:100%}.axm-analog-clock-hour-hand{z-index:20;height:25%;width:2.7cqw;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand{z-index:30;height:35%;width:2.1cqw;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand{z-index:40;height:42%;width:1.5cqw;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-center-point{position:absolute;top:50%;left:50%;z-index:50;height:9cqw;width:9cqw;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;border-width:1.8cqw;--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\n"] }]
637
+ }], ctorParameters: () => [] });
638
+
639
+ class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
640
+ constructor() {
641
+ super();
642
+ this.regionalService = inject(AXPRegionalService);
643
+ this.userTimezone = signal(null);
644
+ this.timezone = computed(() => {
645
+ const configuredTimezone = this.options()?.timezone;
646
+ return configuredTimezone || this.userTimezone();
647
+ });
648
+ this.others = computed(() => (this.options()?.others ?? []));
649
+ this.loadUserTimezone();
650
+ }
651
+ async loadUserTimezone() {
652
+ try {
653
+ const timezoneCode = await this.regionalService.getBrowserTimeZoneCode();
654
+ const timezones = await this.regionalService.getTimeZones();
655
+ const timezone = timezones.find((tz) => tz.code === timezoneCode);
656
+ if (timezone) {
657
+ this.userTimezone.set(timezone);
658
+ }
659
+ }
660
+ catch (error) {
661
+ console.error('Failed to load user timezone', error);
662
+ }
663
+ }
664
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMClockWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
665
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMClockWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
666
+ <div
667
+ class="ax-p-2 ax-h-full ax-overflow-hidden ax-flex ax-justify-center ax-items-center"
668
+ [class.ax-bg-light]="others().length > 0"
669
+ >
670
+ <!-- Main Clock Section -->
671
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full">
672
+ <div
673
+ class="ax-flex ax-items-center ax-justify-center ax-gap-2 ax-w-full ax-flex-wrap"
674
+ [class.ax-rounded-full]="others().length > 0"
675
+ [class.ax-border]="others().length > 0"
676
+ [class.ax-border-gray-100]="others().length > 0"
677
+ [class.ax-shadow-lg]="others().length > 0"
678
+ [class.ax-bg-lighter]="others().length > 0"
679
+ >
680
+ <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow">
681
+ <axm-analog-clock
682
+ [timezone]="timezone()?.iana"
683
+ [classes]="others().length > 0 ? 'ax-bg-lightest' : undefined"
684
+ ></axm-analog-clock>
685
+ </div>
686
+ @if (timezone()?.abbr) {
687
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px] ax-px-2">
688
+ <span class="ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide">{{
689
+ timezone()?.code
690
+ }}</span>
691
+ <span class="ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0">{{ timezone()?.abbr }}</span>
692
+ </div>
693
+ }
694
+ </div>
695
+
696
+ <!-- Additional Clocks Section -->
697
+ @if (others().length > 0) {
698
+ <div class="ax-w-full ax-max-w-4xl ax-mx-auto">
699
+ <div class="ax-flex ax-justify-evenly ax-gap-2 ax-overflow-auto">
700
+ @for (clock of others(); track clock.code) {
701
+ <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-w-full">
702
+ <div
703
+ class="ax-w-full ax-aspect-square ax-flex ax-items-center ax-justify-center"
704
+ style="min-width: 50px; max-width: 80px;"
705
+ >
706
+ <axm-analog-clock
707
+ [timezone]="clock.iana"
708
+ [showNumbers]="false"
709
+ [classes]="'ax-bg-lightest'"
710
+ ></axm-analog-clock>
711
+ </div>
712
+ @if (clock.abbr) {
713
+ <div class="ax-text-center ax-w-full ax-pt-2">
714
+ <span class="ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block">{{
715
+ clock.abbr
716
+ }}</span>
717
+ </div>
718
+ }
719
+ </div>
720
+ }
721
+ </div>
722
+ </div>
723
+ }
724
+ </div>
725
+ </div>
726
+ `, isInline: true, styles: [":host{display:block;width:100%;height:100%}.ax-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type: AXMAnalogClockComponent, selector: "axm-analog-clock", inputs: ["timezone", "classes", "showNumbers"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
727
+ }
728
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMClockWidgetViewComponent, decorators: [{
729
+ type: Component,
730
+ args: [{ template: `
731
+ <div
732
+ class="ax-p-2 ax-h-full ax-overflow-hidden ax-flex ax-justify-center ax-items-center"
733
+ [class.ax-bg-light]="others().length > 0"
734
+ >
735
+ <!-- Main Clock Section -->
736
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full">
737
+ <div
738
+ class="ax-flex ax-items-center ax-justify-center ax-gap-2 ax-w-full ax-flex-wrap"
739
+ [class.ax-rounded-full]="others().length > 0"
740
+ [class.ax-border]="others().length > 0"
741
+ [class.ax-border-gray-100]="others().length > 0"
742
+ [class.ax-shadow-lg]="others().length > 0"
743
+ [class.ax-bg-lighter]="others().length > 0"
744
+ >
745
+ <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow">
746
+ <axm-analog-clock
747
+ [timezone]="timezone()?.iana"
748
+ [classes]="others().length > 0 ? 'ax-bg-lightest' : undefined"
749
+ ></axm-analog-clock>
750
+ </div>
751
+ @if (timezone()?.abbr) {
752
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px] ax-px-2">
753
+ <span class="ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide">{{
754
+ timezone()?.code
755
+ }}</span>
756
+ <span class="ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0">{{ timezone()?.abbr }}</span>
757
+ </div>
758
+ }
759
+ </div>
760
+
761
+ <!-- Additional Clocks Section -->
762
+ @if (others().length > 0) {
763
+ <div class="ax-w-full ax-max-w-4xl ax-mx-auto">
764
+ <div class="ax-flex ax-justify-evenly ax-gap-2 ax-overflow-auto">
765
+ @for (clock of others(); track clock.code) {
766
+ <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-w-full">
767
+ <div
768
+ class="ax-w-full ax-aspect-square ax-flex ax-items-center ax-justify-center"
769
+ style="min-width: 50px; max-width: 80px;"
770
+ >
771
+ <axm-analog-clock
772
+ [timezone]="clock.iana"
773
+ [showNumbers]="false"
774
+ [classes]="'ax-bg-lightest'"
775
+ ></axm-analog-clock>
776
+ </div>
777
+ @if (clock.abbr) {
778
+ <div class="ax-text-center ax-w-full ax-pt-2">
779
+ <span class="ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block">{{
780
+ clock.abbr
781
+ }}</span>
782
+ </div>
783
+ }
784
+ </div>
785
+ }
786
+ </div>
787
+ </div>
788
+ }
789
+ </div>
790
+ </div>
791
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXMAnalogClockComponent], styles: [":host{display:block;width:100%;height:100%}.ax-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n"] }]
792
+ }], ctorParameters: () => [] });
793
+
794
+ var analogClockWidgetView_component = /*#__PURE__*/Object.freeze({
795
+ __proto__: null,
796
+ AXMClockWidgetViewComponent: AXMClockWidgetViewComponent
797
+ });
798
+
799
+ const AXPAnalogClockWidget = {
800
+ name: 'analog-clock',
801
+ title: 'Analog Clock',
802
+ description: '',
803
+ type: 'view',
804
+ categories: [],
805
+ groups: [AXPWidgetGroupEnum.DashboardWidget],
806
+ icon: 'fa-solid fa-square',
807
+ properties: [
808
+ {
809
+ name: 'timezone',
810
+ title: '@dashboard:widgets.analog-clock.timezone',
811
+ group: AXP_DATA_PROPERTY_GROUP,
812
+ schema: {
813
+ dataType: 'object',
814
+ interface: {
815
+ name: 'timezone',
816
+ path: 'options.timezone',
817
+ type: AXPWidgetsCatalog.select,
818
+ options: {
819
+ dataSource: 'timezones',
820
+ textField: 'title',
821
+ valueField: 'code',
822
+ },
823
+ },
824
+ },
825
+ visible: true,
826
+ order: 1,
827
+ },
828
+ {
829
+ name: 'others',
830
+ title: '@dashboard:widgets.analog-clock.other-timezones',
831
+ group: AXP_DATA_PROPERTY_GROUP,
832
+ schema: {
833
+ dataType: 'object',
834
+ interface: {
835
+ name: 'others',
836
+ path: 'options.others',
837
+ type: AXPWidgetsCatalog.select,
838
+ options: {
839
+ multiple: true,
840
+ dataSource: 'timezones',
841
+ textField: 'title',
842
+ valueField: 'code',
843
+ },
844
+ },
845
+ },
846
+ visible: true,
847
+ order: 2,
848
+ },
849
+ ],
850
+ components: {
851
+ view: {
852
+ component: () => Promise.resolve().then(function () { return analogClockWidgetView_component; }).then((c) => c.AXMClockWidgetViewComponent),
853
+ },
854
+ },
855
+ meta: {
856
+ dimensions: {
857
+ width: 2,
858
+ height: 3,
859
+ minWidth: 1,
860
+ minHeight: 2,
861
+ maxWidth: 4,
862
+ maxHeight: 6,
863
+ },
864
+ },
865
+ };
866
+
452
867
  /**
453
868
  * Bar Chart Widget Component
454
869
  * Renders data as vertical bars with interactive hover effects and animations
@@ -474,10 +889,10 @@ class AXPBarChartWidgetViewComponent extends AXPValueWidgetComponent {
474
889
  handleBarClick(event) {
475
890
  //console.log(event);
476
891
  }
477
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBarChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
478
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPBarChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-bar-chart [data]=\"barChartData()\" [options]=\"barChartOptions()\" (barClick)=\"handleBarClick($event)\"></ax-bar-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
892
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPBarChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
893
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPBarChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-bar-chart [data]=\"barChartData()\" [options]=\"barChartOptions()\" (barClick)=\"handleBarClick($event)\"></ax-bar-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
479
894
  }
480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPBarChartWidgetViewComponent, decorators: [{
895
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPBarChartWidgetViewComponent, decorators: [{
481
896
  type: Component,
482
897
  args: [{ imports: [AXBarChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-bar-chart [data]=\"barChartData()\" [options]=\"barChartOptions()\" (barClick)=\"handleBarClick($event)\"></ax-bar-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
483
898
  }], ctorParameters: () => [] });
@@ -911,10 +1326,10 @@ class AXPClockCalendarWidgetViewComponent extends AXPValueWidgetComponent {
911
1326
  const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
912
1327
  return days[this.currentDate.getDay()];
913
1328
  }
914
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
915
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPClockCalendarWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-clock-calendar-container\">\n <!-- Timezone indicator (only shown when not local) -->\n <!-- @if (showTimezoneIndicator()) {\n <div class=\"axp-clock-calendar-timezone-badge\"><i class=\"fa-solid fa-globe\"></i> {{ displayTimezone() }}</div>\n } -->\n\n <!-- Day of week display -->\n @if (showDayOfWeek()) {\n <div class=\"axp-clock-calendar-day-label\">{{ getDayOfWeek() }}</div>\n }\n\n <div class=\"axp-clock-calendar-content\">\n <!-- Digital Clock Display -->\n @if (showDigitalClock()) {\n <div class=\"axp-clock-calendar-digital-clock\">\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\n </div>\n }\n\n <!-- Analog Clock Display -->\n @if (showAnalogClock()) {\n <div class=\"axp-clock-calendar-analog-clock\">\n <!-- Hour markers -->\n @for (hour of clockHours; track hour) {\n <div\n class=\"axp-clock-calendar-hour-marker\"\n [style.transform]=\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\"\n ></div>\n }\n\n <!-- Clock Numbers -->\n <div class=\"axp-clock-calendar-numbers-container\">\n @for (hour of clockHourNumbers; track hour) {\n <div\n class=\"axp-clock-calendar-hour-number\"\n [style.transform]=\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\"\n >\n <span [style.transform]=\"'rotate(' + -hour.angle + 'deg)'\">{{ hour.number }}</span>\n </div>\n }\n </div>\n\n <!-- Clock Hands -->\n <div class=\"axp-clock-calendar-hands-container\">\n <div class=\"axp-clock-calendar-hour-hand\" [style.transform]=\"'rotate(' + hourRotation + 'deg)'\"></div>\n <div class=\"axp-clock-calendar-minute-hand\" [style.transform]=\"'rotate(' + minuteRotation + 'deg)'\"></div>\n @if (showSeconds()) {\n <div class=\"axp-clock-calendar-second-hand\" [style.transform]=\"'rotate(' + secondRotation + 'deg)'\"></div>\n }\n <div class=\"axp-clock-calendar-center-dot\"></div>\n </div>\n </div>\n }\n\n <!-- Date Display -->\n @if (showDate()) {\n <div class=\"axp-clock-calendar-date-display\">\n <i class=\"fa-regular fa-calendar\"></i>\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\n </div>\n }\n </div>\n</div>\n", styles: [":host{display:block;width:100%;height:100%}.axp-clock-calendar-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative;overflow:hidden;box-shadow:var(--ax-shadow-sm);background-color:var(--ax-surface-color);color:var(--ax-text-color)}.axp-clock-calendar-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;position:relative}.axp-clock-calendar-timezone-badge{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;padding:.25rem;border-radius:1rem;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-timezone-badge:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-timezone-badge{display:flex;align-items:center;gap:.25rem}.axp-clock-calendar-timezone-badge i{font-size:.75rem}.axp-clock-calendar-day-label{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05rem;margin-bottom:.25rem}.axp-clock-calendar-digital-clock{font-size:1.5rem;font-weight:500;letter-spacing:.05rem;font-family:monospace;padding:.5rem .75rem;border-radius:.25rem}.axp-clock-calendar-analog-clock{position:relative;border-radius:50%;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-analog-clock:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-analog-clock{display:flex;align-items:center;justify-content:center;background:var(--ax-surface-color);width:min(180px,100%);height:0;padding-bottom:min(180px,100%);margin:.5rem auto;min-width:120px;min-height:120px;box-shadow:var(--ax-shadow-sm)}.axp-clock-calendar-hands-container,.axp-clock-calendar-numbers-container{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%}.axp-clock-calendar-hour-marker{position:absolute;left:50%;top:50%;width:2px;height:4%;margin-left:-1px;border-radius:1px;background-color:var(--ax-text-muted);transform-origin:50% 0}.axp-clock-calendar-hour-number{position:absolute;left:50%;top:50%;transform-origin:50% 0;font-size:clamp(.7rem,2.5vw,.9rem);font-weight:600;color:var(--ax-text-color)}.axp-clock-calendar-hour-number span{display:block}.axp-clock-calendar-hour-hand{position:absolute;top:50%;left:50%;width:4px;height:25%;margin-left:-2px;background-color:rgba(23,23,23,.75)}.axp-clock-calendar-hour-hand:is(.ax-dark *){background-color:rgba(245,245,245,.75)}.axp-clock-calendar-hour-hand{transform-origin:50% 0;border-radius:3px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-minute-hand{position:absolute;top:50%;left:50%;width:3px;height:38%;margin-left:-1.5px;background-color:rgba(23,23,23,.5)}.axp-clock-calendar-minute-hand:is(.ax-dark *){background-color:rgba(245,245,245,.5)}.axp-clock-calendar-minute-hand{transform-origin:50% 0;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-second-hand{position:absolute;top:50%;left:50%;width:2px;height:42%;margin-left:-1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-400),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand{transform-origin:50% 0;border-radius:1px;box-shadow:0 0 3px rgba(0,0,0,.2)}.axp-clock-calendar-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;margin-top:-5px;margin-left:-5px;background-color:#d81159;border:2px solid var(--ax-surface-color);box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-date-display{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem .6rem;border-radius:.25rem;background-color:var(--ax-surface-hover);color:var(--ax-text-color)}.axp-clock-calendar-date-display i{font-size:.85rem;opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXTagModule }, { kind: "ngmodule", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1330
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXPClockCalendarWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-clock-calendar-container\">\n <!-- Timezone indicator (only shown when not local) -->\n <!-- @if (showTimezoneIndicator()) {\n <div class=\"axp-clock-calendar-timezone-badge\"><i class=\"fa-solid fa-globe\"></i> {{ displayTimezone() }}</div>\n } -->\n\n <!-- Day of week display -->\n @if (showDayOfWeek()) {\n <div class=\"axp-clock-calendar-day-label\">{{ getDayOfWeek() }}</div>\n }\n\n <div class=\"axp-clock-calendar-content\">\n <!-- Digital Clock Display -->\n @if (showDigitalClock()) {\n <div class=\"axp-clock-calendar-digital-clock\">\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\n </div>\n }\n\n <!-- Analog Clock Display -->\n @if (showAnalogClock()) {\n <div class=\"axp-clock-calendar-analog-clock\">\n <!-- Hour markers -->\n @for (hour of clockHours; track hour) {\n <div\n class=\"axp-clock-calendar-hour-marker\"\n [style.transform]=\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\"\n ></div>\n }\n\n <!-- Clock Numbers -->\n <div class=\"axp-clock-calendar-numbers-container\">\n @for (hour of clockHourNumbers; track hour) {\n <div\n class=\"axp-clock-calendar-hour-number\"\n [style.transform]=\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\"\n >\n <span [style.transform]=\"'rotate(' + -hour.angle + 'deg)'\">{{ hour.number }}</span>\n </div>\n }\n </div>\n\n <!-- Clock Hands -->\n <div class=\"axp-clock-calendar-hands-container\">\n <div class=\"axp-clock-calendar-hour-hand\" [style.transform]=\"'rotate(' + hourRotation + 'deg)'\"></div>\n <div class=\"axp-clock-calendar-minute-hand\" [style.transform]=\"'rotate(' + minuteRotation + 'deg)'\"></div>\n @if (showSeconds()) {\n <div class=\"axp-clock-calendar-second-hand\" [style.transform]=\"'rotate(' + secondRotation + 'deg)'\"></div>\n }\n <div class=\"axp-clock-calendar-center-dot\"></div>\n </div>\n </div>\n }\n\n <!-- Date Display -->\n @if (showDate()) {\n <div class=\"axp-clock-calendar-date-display\">\n <i class=\"fa-regular fa-calendar\"></i>\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\n </div>\n }\n </div>\n</div>\n", styles: [":host{display:block;width:100%;height:100%}.axp-clock-calendar-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative;overflow:hidden;box-shadow:var(--ax-shadow-sm);background-color:var(--ax-surface-color);color:var(--ax-text-color)}.axp-clock-calendar-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;position:relative}.axp-clock-calendar-timezone-badge{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;padding:.25rem;border-radius:1rem;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-timezone-badge:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-timezone-badge{display:flex;align-items:center;gap:.25rem}.axp-clock-calendar-timezone-badge i{font-size:.75rem}.axp-clock-calendar-day-label{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05rem;margin-bottom:.25rem}.axp-clock-calendar-digital-clock{font-size:1.5rem;font-weight:500;letter-spacing:.05rem;font-family:monospace;padding:.5rem .75rem;border-radius:.25rem}.axp-clock-calendar-analog-clock{position:relative;border-radius:50%;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-analog-clock:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-analog-clock{display:flex;align-items:center;justify-content:center;background:var(--ax-surface-color);width:min(180px,100%);height:0;padding-bottom:min(180px,100%);margin:.5rem auto;min-width:120px;min-height:120px;box-shadow:var(--ax-shadow-sm)}.axp-clock-calendar-hands-container,.axp-clock-calendar-numbers-container{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%}.axp-clock-calendar-hour-marker{position:absolute;left:50%;top:50%;width:2px;height:4%;margin-left:-1px;border-radius:1px;background-color:var(--ax-text-muted);transform-origin:50% 0}.axp-clock-calendar-hour-number{position:absolute;left:50%;top:50%;transform-origin:50% 0;font-size:clamp(.7rem,2.5vw,.9rem);font-weight:600;color:var(--ax-text-color)}.axp-clock-calendar-hour-number span{display:block}.axp-clock-calendar-hour-hand{position:absolute;top:50%;left:50%;width:4px;height:25%;margin-left:-2px;background-color:rgba(23,23,23,.75)}.axp-clock-calendar-hour-hand:is(.ax-dark *){background-color:rgba(245,245,245,.75)}.axp-clock-calendar-hour-hand{transform-origin:50% 0;border-radius:3px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-minute-hand{position:absolute;top:50%;left:50%;width:3px;height:38%;margin-left:-1.5px;background-color:rgba(23,23,23,.5)}.axp-clock-calendar-minute-hand:is(.ax-dark *){background-color:rgba(245,245,245,.5)}.axp-clock-calendar-minute-hand{transform-origin:50% 0;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-second-hand{position:absolute;top:50%;left:50%;width:2px;height:42%;margin-left:-1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-400),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand{transform-origin:50% 0;border-radius:1px;box-shadow:0 0 3px rgba(0,0,0,.2)}.axp-clock-calendar-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;margin-top:-5px;margin-left:-5px;background-color:#d81159;border:2px solid var(--ax-surface-color);box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-date-display{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem .6rem;border-radius:.25rem;background-color:var(--ax-surface-hover);color:var(--ax-text-color)}.axp-clock-calendar-date-display i{font-size:.85rem;opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXTagModule }, { kind: "ngmodule", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
916
1331
  }
917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, decorators: [{
1332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, decorators: [{
918
1333
  type: Component,
919
1334
  args: [{ standalone: true, imports: [CommonModule, AXDateTimeModule, AXFormatModule, AXTagModule, AXDecoratorModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"axp-clock-calendar-container\">\n <!-- Timezone indicator (only shown when not local) -->\n <!-- @if (showTimezoneIndicator()) {\n <div class=\"axp-clock-calendar-timezone-badge\"><i class=\"fa-solid fa-globe\"></i> {{ displayTimezone() }}</div>\n } -->\n\n <!-- Day of week display -->\n @if (showDayOfWeek()) {\n <div class=\"axp-clock-calendar-day-label\">{{ getDayOfWeek() }}</div>\n }\n\n <div class=\"axp-clock-calendar-content\">\n <!-- Digital Clock Display -->\n @if (showDigitalClock()) {\n <div class=\"axp-clock-calendar-digital-clock\">\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\n </div>\n }\n\n <!-- Analog Clock Display -->\n @if (showAnalogClock()) {\n <div class=\"axp-clock-calendar-analog-clock\">\n <!-- Hour markers -->\n @for (hour of clockHours; track hour) {\n <div\n class=\"axp-clock-calendar-hour-marker\"\n [style.transform]=\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\"\n ></div>\n }\n\n <!-- Clock Numbers -->\n <div class=\"axp-clock-calendar-numbers-container\">\n @for (hour of clockHourNumbers; track hour) {\n <div\n class=\"axp-clock-calendar-hour-number\"\n [style.transform]=\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\"\n >\n <span [style.transform]=\"'rotate(' + -hour.angle + 'deg)'\">{{ hour.number }}</span>\n </div>\n }\n </div>\n\n <!-- Clock Hands -->\n <div class=\"axp-clock-calendar-hands-container\">\n <div class=\"axp-clock-calendar-hour-hand\" [style.transform]=\"'rotate(' + hourRotation + 'deg)'\"></div>\n <div class=\"axp-clock-calendar-minute-hand\" [style.transform]=\"'rotate(' + minuteRotation + 'deg)'\"></div>\n @if (showSeconds()) {\n <div class=\"axp-clock-calendar-second-hand\" [style.transform]=\"'rotate(' + secondRotation + 'deg)'\"></div>\n }\n <div class=\"axp-clock-calendar-center-dot\"></div>\n </div>\n </div>\n }\n\n <!-- Date Display -->\n @if (showDate()) {\n <div class=\"axp-clock-calendar-date-display\">\n <i class=\"fa-regular fa-calendar\"></i>\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\n </div>\n }\n </div>\n</div>\n", styles: [":host{display:block;width:100%;height:100%}.axp-clock-calendar-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative;overflow:hidden;box-shadow:var(--ax-shadow-sm);background-color:var(--ax-surface-color);color:var(--ax-text-color)}.axp-clock-calendar-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;position:relative}.axp-clock-calendar-timezone-badge{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;padding:.25rem;border-radius:1rem;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-timezone-badge:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-timezone-badge{display:flex;align-items:center;gap:.25rem}.axp-clock-calendar-timezone-badge i{font-size:.75rem}.axp-clock-calendar-day-label{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05rem;margin-bottom:.25rem}.axp-clock-calendar-digital-clock{font-size:1.5rem;font-weight:500;letter-spacing:.05rem;font-family:monospace;padding:.5rem .75rem;border-radius:.25rem}.axp-clock-calendar-analog-clock{position:relative;border-radius:50%;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-analog-clock:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-analog-clock{display:flex;align-items:center;justify-content:center;background:var(--ax-surface-color);width:min(180px,100%);height:0;padding-bottom:min(180px,100%);margin:.5rem auto;min-width:120px;min-height:120px;box-shadow:var(--ax-shadow-sm)}.axp-clock-calendar-hands-container,.axp-clock-calendar-numbers-container{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%}.axp-clock-calendar-hour-marker{position:absolute;left:50%;top:50%;width:2px;height:4%;margin-left:-1px;border-radius:1px;background-color:var(--ax-text-muted);transform-origin:50% 0}.axp-clock-calendar-hour-number{position:absolute;left:50%;top:50%;transform-origin:50% 0;font-size:clamp(.7rem,2.5vw,.9rem);font-weight:600;color:var(--ax-text-color)}.axp-clock-calendar-hour-number span{display:block}.axp-clock-calendar-hour-hand{position:absolute;top:50%;left:50%;width:4px;height:25%;margin-left:-2px;background-color:rgba(23,23,23,.75)}.axp-clock-calendar-hour-hand:is(.ax-dark *){background-color:rgba(245,245,245,.75)}.axp-clock-calendar-hour-hand{transform-origin:50% 0;border-radius:3px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-minute-hand{position:absolute;top:50%;left:50%;width:3px;height:38%;margin-left:-1.5px;background-color:rgba(23,23,23,.5)}.axp-clock-calendar-minute-hand:is(.ax-dark *){background-color:rgba(245,245,245,.5)}.axp-clock-calendar-minute-hand{transform-origin:50% 0;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-second-hand{position:absolute;top:50%;left:50%;width:2px;height:42%;margin-left:-1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-400),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand{transform-origin:50% 0;border-radius:1px;box-shadow:0 0 3px rgba(0,0,0,.2)}.axp-clock-calendar-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;margin-top:-5px;margin-left:-5px;background-color:#d81159;border:2px solid var(--ax-surface-color);box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-date-display{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem .6rem;border-radius:.25rem;background-color:var(--ax-surface-hover);color:var(--ax-text-color)}.axp-clock-calendar-date-display i{font-size:.85rem;opacity:.7}\n"] }]
920
1335
  }] });
@@ -1161,10 +1576,10 @@ class AXPDonutChartWidgetViewComponent extends AXPValueWidgetComponent {
1161
1576
  handleDonutChartSegmentClick(event) {
1162
1577
  //console.log(event);
1163
1578
  }
1164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDonutChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPDonutChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-donut-chart\n [data]=\"donutChartData()\"\n [options]=\"donutChartOptions()\"\n (segmentClick)=\"handleDonutChartSegmentClick($event)\"\n></ax-donut-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1579
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPDonutChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1580
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPDonutChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-donut-chart\n [data]=\"donutChartData()\"\n [options]=\"donutChartOptions()\"\n (segmentClick)=\"handleDonutChartSegmentClick($event)\"\n></ax-donut-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXDonutChartComponent, selector: "ax-donut-chart", inputs: ["data", "options"], outputs: ["segmentClick", "segmentHover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1166
1581
  }
1167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDonutChartWidgetViewComponent, decorators: [{
1582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPDonutChartWidgetViewComponent, decorators: [{
1168
1583
  type: Component,
1169
1584
  args: [{ imports: [AXDonutChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-donut-chart\n [data]=\"donutChartData()\"\n [options]=\"donutChartOptions()\"\n (segmentClick)=\"handleDonutChartSegmentClick($event)\"\n></ax-donut-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
1170
1585
  }], ctorParameters: () => [] });
@@ -1441,10 +1856,10 @@ class AXPGaugeChartWidgetViewComponent extends AXPValueWidgetComponent {
1441
1856
  animationDuration: 800,
1442
1857
  });
1443
1858
  }
1444
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1445
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPGaugeChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-gauge-chart [value]=\"gaugeChartValue()\" [options]=\"gaugeChartOptions()\"></ax-gauge-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXGaugeChartComponent, selector: "ax-gauge-chart", inputs: ["value", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1859
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1860
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPGaugeChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-gauge-chart [value]=\"gaugeChartValue()\" [options]=\"gaugeChartOptions()\"></ax-gauge-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXGaugeChartComponent, selector: "ax-gauge-chart", inputs: ["value", "options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1446
1861
  }
1447
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, decorators: [{
1862
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, decorators: [{
1448
1863
  type: Component,
1449
1864
  args: [{ imports: [AXGaugeChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-gauge-chart [value]=\"gaugeChartValue()\" [options]=\"gaugeChartOptions()\"></ax-gauge-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
1450
1865
  }], ctorParameters: () => [] });
@@ -1727,10 +2142,10 @@ class AXPLineChartWidgetViewComponent extends AXPValueWidgetComponent {
1727
2142
  handleLineChartPointClick(event) {
1728
2143
  //console.log(event);
1729
2144
  }
1730
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPLineChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1731
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AXPLineChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-line-chart\n (pointClick)=\"handleLineChartPointClick($event)\"\n [data]=\"lineChartData()\"\n [options]=\"lineChartOptions()\"\n></ax-line-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXLineChartComponent, selector: "ax-line-chart", inputs: ["data", "options"], outputs: ["pointClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPLineChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2146
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPLineChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ax-line-chart\n (pointClick)=\"handleLineChartPointClick($event)\"\n [data]=\"lineChartData()\"\n [options]=\"lineChartOptions()\"\n></ax-line-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: AXLineChartComponent, selector: "ax-line-chart", inputs: ["data", "options"], outputs: ["pointClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1732
2147
  }
1733
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPLineChartWidgetViewComponent, decorators: [{
2148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPLineChartWidgetViewComponent, decorators: [{
1734
2149
  type: Component,
1735
2150
  args: [{ standalone: true, imports: [AXLineChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-line-chart\n (pointClick)=\"handleLineChartPointClick($event)\"\n [data]=\"lineChartData()\"\n [options]=\"lineChartOptions()\"\n></ax-line-chart>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
1736
2151
  }], ctorParameters: () => [] });
@@ -2177,15 +2592,15 @@ class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent {
2177
2592
  this.setValue(event.value);
2178
2593
  }
2179
2594
  }
2180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPStickyNoteWidgetViewComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:click": "handleClickOutside($event)" } }, providers: [
2595
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2596
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXPStickyNoteWidgetViewComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:click": "handleClickOutside($event)" } }, providers: [
2182
2597
  {
2183
2598
  provide: AXGridLayoutWidgetComponent,
2184
2599
  useExisting: AXPStickyNoteWidgetViewComponent,
2185
2600
  },
2186
2601
  ], viewQueries: [{ propertyName: "wysiwyg", first: true, predicate: ["wysiwyg"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"sticky-note-container ax-size-full ax-rounded-lg ax-flex ax-flex-col ax-p-4 ax-shadow-md ax-transition-all ax-duration-300 hover:ax-shadow-lg\"\n [style.background-color]=\"bgColor()\"\n [style.color]=\"color()\"\n [class.ax-shadow-lg]=\"isEditing()\"\n [class.ax-scale-[1.02]]=\"isEditing()\"\n (dblclick)=\"activateEdit()\"\n>\n <!-- Header with timestamp -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <div class=\"ax-text-xs ax-opacity-70 ax-font-medium ax-flex ax-items-center ax-gap-1\">\n <i class=\"fa-regular fa-clock ax-text-[0.65rem]\"></i>\n {{ date() | format : 'datetime' : 'dd MMM, YY HH:mm' | async }}\n </div>\n </div>\n\n <!-- Content area -->\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-wysiwyg-container\n #wysiwyg\n [class]=\"isEditing() ? 'ax-pointer-events-auto ax-cursor-text' : 'ax-pointer-events-none !ax-cursor-pointer'\"\n class=\"ax-h-full\"\n placeHolder=\"start writing with double click...\"\n look=\"none\"\n (onValueChanged)=\"valueChange($event)\"\n [ngModel]=\"value()\"\n >\n <ax-wysiwyg-view class=\"!ax-size-full ax-border-b-0\"></ax-wysiwyg-view>\n </ax-wysiwyg-container>\n </div>\n\n <!-- Footer with color selector and save button -->\n @if (isEditing()) {\n <div class=\"ax-absolute ax-bottom-2 ax-left-2 ax-right-2 ax-flex ax-flex-wrap ax-gap-1 ax-text-xs\">\n <!-- Color selection bar when in edit mode -->\n <div class=\"ax-flex ax-w-full ax-mt-2 ax-border ax-border-gray-200 ax-overflow-hidden ax-rounded-md\">\n @for (preset of colorPresets; track preset) {\n <div\n class=\"ax-h-6 ax-flex-1 ax-cursor-pointer ax-transition-all ax-duration-200 ax-border-r ax-border-gray-200 last:ax-border-r-0 hover:ax-brightness-95\"\n [style.background-color]=\"preset\"\n [class.ax-ring-inset]=\"bgColor() === preset\"\n [class.ax-ring-2]=\"bgColor() === preset\"\n [class.ax-ring-primary]=\"bgColor() === preset\"\n (click)=\"setColor(preset)\"\n ></div>\n }\n </div>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%;height:100%}:host ::ng-deep ax-wysiwyg-view{color:#2e2e2e!important}\n"], dependencies: [{ kind: "ngmodule", type: AXWysiwygModule }, { kind: "component", type: i1$1.AXWysiwygContainerComponent, selector: "ax-wysiwyg-container", inputs: ["look", "placeHolder"], outputs: ["onValueChanged"] }, { kind: "component", type: i1$1.AXWysiwygViewComponent, selector: "ax-wysiwyg-view", inputs: ["class"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXToolBarModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXColorBoxModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2187
2602
  }
2188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, decorators: [{
2603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, decorators: [{
2189
2604
  type: Component,
2190
2605
  args: [{ standalone: true, imports: [
2191
2606
  AXWysiwygModule,
@@ -2344,7 +2759,7 @@ class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent {
2344
2759
  return 'Tomorrow';
2345
2760
  if (diffDays < 7)
2346
2761
  return this.datePipe.transform(dateObj, 'EEE') || '';
2347
- return this.datePipe.transform(dateObj, 'MM/DD/YYYY') || '';
2762
+ return this.datePipe.transform(dateObj, 'MM/DD/yyyy') || '';
2348
2763
  }
2349
2764
  getPriorityColor(priority) {
2350
2765
  if (!priority)
@@ -2371,10 +2786,10 @@ class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent {
2371
2786
  const diffMs = targetDate.getTime() - now.getTime();
2372
2787
  return Math.floor(diffMs / (1000 * 60 * 60 * 24));
2373
2788
  }
2374
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPTaskListWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2375
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPTaskListWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick", taskCompleted: "taskCompleted" }, providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\">\n <ax-icon class=\"ax-text-primary-500\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\n </h3>\n <div class=\"ax-flex ax-gap-2\">\n @if (getPendingTaskCount() > 0) {\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n @if (getCompletedTaskCount() > 0) {\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-5\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\">\n <h4 class=\"ax-font-medium category-header\">{{ category }}</h4>\n @if (getCategoryTaskCount(category)) {\n <ax-badge\n [text]=\"getCategoryTaskCount(category).toString()\"\n [color]=\"'primary'\"\n size=\"sm\"\n class=\"ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n <div class=\"ax-space-y-2\">\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n </div>\n }\n } @else {\n <!-- Uncategorized Tasks -->\n <div class=\"ax-space-y-2\">\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\"\n >\n <ax-icon class=\"ax-text-5xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center ax-font-medium\">\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\n </p>\n <p class=\"ax-text-center ax-text-sm ax-mt-2\">\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div\n class=\"ax-flex ax-gap-3 ax-items-start ax-p-3 ax-rounded-lg task-item\"\n [class.priority-high]=\"task.priority === 'high'\"\n [class.priority-medium]=\"task.priority === 'medium'\"\n [class.priority-low]=\"task.priority === 'low'\"\n [class.ax-bg-surface]=\"task.completed\"\n >\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0 ax-mt-1 task-checkbox\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6 class=\"ax-font-medium ax-truncate ax-pb-1\" [title]=\"task.title\" [class.task-completed]=\"task.completed\">\n {{ task.title }}\n </h6>\n @if (showPriority() && task.priority) {\n <ax-badge\n [color]=\"getPriorityColor(task.priority)\"\n [text]=\"task.priority\"\n size=\"sm\"\n class=\"ax-ml-1 ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\">\n @if (showDate() && task.dueDate) {\n <span\n class=\"ax-flex ax-items-center ax-gap-1 due-date\"\n [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\"\n [class.overdue]=\"getDaysDifference(task.dueDate) < 0\"\n >\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n }\n @if (showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignedTo.image) {\n <ax-icon class=\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\">\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-item{border-radius:8px;transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\"\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i3.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPTaskListWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXPTaskListWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick", taskCompleted: "taskCompleted" }, providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\">\n <ax-icon class=\"ax-text-primary-500\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\n </h3>\n <div class=\"ax-flex ax-gap-2\">\n @if (getPendingTaskCount() > 0) {\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n @if (getCompletedTaskCount() > 0) {\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-5\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\">\n <h4 class=\"ax-font-medium category-header\">{{ category }}</h4>\n @if (getCategoryTaskCount(category)) {\n <ax-badge\n [text]=\"getCategoryTaskCount(category).toString()\"\n [color]=\"'primary'\"\n size=\"sm\"\n class=\"ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n <div class=\"ax-space-y-2\">\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n </div>\n }\n } @else {\n <!-- Uncategorized Tasks -->\n <div class=\"ax-space-y-2\">\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\"\n >\n <ax-icon class=\"ax-text-5xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center ax-font-medium\">\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\n </p>\n <p class=\"ax-text-center ax-text-sm ax-mt-2\">\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div\n class=\"ax-flex ax-gap-3 ax-items-start ax-p-3 task-item\"\n [class.priority-high]=\"task.priority === 'high'\"\n [class.priority-medium]=\"task.priority === 'medium'\"\n [class.priority-low]=\"task.priority === 'low'\"\n >\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0 ax-mt-1 task-checkbox\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6 class=\"ax-font-medium ax-truncate ax-pb-1\" [title]=\"task.title\" [class.task-completed]=\"task.completed\">\n {{ task.title }}\n </h6>\n @if (showPriority() && task.priority) {\n <ax-badge\n [color]=\"getPriorityColor(task.priority)\"\n [text]=\"task.priority\"\n size=\"sm\"\n class=\"ax-ml-1 ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\">\n @if (showDate() && task.dueDate) {\n <span\n class=\"ax-flex ax-items-center ax-gap-1 due-date\"\n [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\"\n [class.overdue]=\"getDaysDifference(task.dueDate) < 0\"\n >\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n }\n @if (showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignedTo.image) {\n <ax-icon class=\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\">\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-item{transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\"\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i3.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "text", "look"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2376
2791
  }
2377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPTaskListWidgetViewComponent, decorators: [{
2792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPTaskListWidgetViewComponent, decorators: [{
2378
2793
  type: Component,
2379
2794
  args: [{ standalone: true, imports: [
2380
2795
  CommonModule,
@@ -2387,7 +2802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
2387
2802
  AXCheckBoxModule,
2388
2803
  AXLabelModule,
2389
2804
  AXTranslationModule,
2390
- ], providers: [DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\">\n <ax-icon class=\"ax-text-primary-500\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\n </h3>\n <div class=\"ax-flex ax-gap-2\">\n @if (getPendingTaskCount() > 0) {\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n @if (getCompletedTaskCount() > 0) {\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-5\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\">\n <h4 class=\"ax-font-medium category-header\">{{ category }}</h4>\n @if (getCategoryTaskCount(category)) {\n <ax-badge\n [text]=\"getCategoryTaskCount(category).toString()\"\n [color]=\"'primary'\"\n size=\"sm\"\n class=\"ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n <div class=\"ax-space-y-2\">\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n </div>\n }\n } @else {\n <!-- Uncategorized Tasks -->\n <div class=\"ax-space-y-2\">\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\"\n >\n <ax-icon class=\"ax-text-5xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center ax-font-medium\">\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\n </p>\n <p class=\"ax-text-center ax-text-sm ax-mt-2\">\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div\n class=\"ax-flex ax-gap-3 ax-items-start ax-p-3 ax-rounded-lg task-item\"\n [class.priority-high]=\"task.priority === 'high'\"\n [class.priority-medium]=\"task.priority === 'medium'\"\n [class.priority-low]=\"task.priority === 'low'\"\n [class.ax-bg-surface]=\"task.completed\"\n >\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0 ax-mt-1 task-checkbox\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6 class=\"ax-font-medium ax-truncate ax-pb-1\" [title]=\"task.title\" [class.task-completed]=\"task.completed\">\n {{ task.title }}\n </h6>\n @if (showPriority() && task.priority) {\n <ax-badge\n [color]=\"getPriorityColor(task.priority)\"\n [text]=\"task.priority\"\n size=\"sm\"\n class=\"ax-ml-1 ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\">\n @if (showDate() && task.dueDate) {\n <span\n class=\"ax-flex ax-items-center ax-gap-1 due-date\"\n [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\"\n [class.overdue]=\"getDaysDifference(task.dueDate) < 0\"\n >\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n }\n @if (showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignedTo.image) {\n <ax-icon class=\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\">\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-item{border-radius:8px;transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\"\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\n"] }]
2805
+ ], providers: [DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\">\n <ax-icon class=\"ax-text-primary-500\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\n </h3>\n <div class=\"ax-flex ax-gap-2\">\n @if (getPendingTaskCount() > 0) {\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n @if (getCompletedTaskCount() > 0) {\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-5\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\">\n <h4 class=\"ax-font-medium category-header\">{{ category }}</h4>\n @if (getCategoryTaskCount(category)) {\n <ax-badge\n [text]=\"getCategoryTaskCount(category).toString()\"\n [color]=\"'primary'\"\n size=\"sm\"\n class=\"ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n <div class=\"ax-space-y-2\">\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n </div>\n }\n } @else {\n <!-- Uncategorized Tasks -->\n <div class=\"ax-space-y-2\">\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\"\n >\n <ax-icon class=\"ax-text-5xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center ax-font-medium\">\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\n </p>\n <p class=\"ax-text-center ax-text-sm ax-mt-2\">\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div\n class=\"ax-flex ax-gap-3 ax-items-start ax-p-3 task-item\"\n [class.priority-high]=\"task.priority === 'high'\"\n [class.priority-medium]=\"task.priority === 'medium'\"\n [class.priority-low]=\"task.priority === 'low'\"\n >\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0 ax-mt-1 task-checkbox\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6 class=\"ax-font-medium ax-truncate ax-pb-1\" [title]=\"task.title\" [class.task-completed]=\"task.completed\">\n {{ task.title }}\n </h6>\n @if (showPriority() && task.priority) {\n <ax-badge\n [color]=\"getPriorityColor(task.priority)\"\n [text]=\"task.priority\"\n size=\"sm\"\n class=\"ax-ml-1 ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\">\n @if (showDate() && task.dueDate) {\n <span\n class=\"ax-flex ax-items-center ax-gap-1 due-date\"\n [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\"\n [class.overdue]=\"getDaysDifference(task.dueDate) < 0\"\n >\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n }\n @if (showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignedTo.image) {\n <ax-icon class=\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\">\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-item{transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\"\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\n"] }]
2391
2806
  }] });
2392
2807
 
2393
2808
  var tasklistWidget_component = /*#__PURE__*/Object.freeze({
@@ -2549,60 +2964,70 @@ class AXPWeatherApiAbstract {
2549
2964
  id: 'sunny',
2550
2965
  name: 'Sunny',
2551
2966
  icon: 'fa-solid fa-sun',
2967
+ svgIcon: 'day.svg',
2552
2968
  color: '#ff9d00',
2553
2969
  },
2554
2970
  clearNight: {
2555
2971
  id: 'clearNight',
2556
2972
  name: 'Clear Night',
2557
2973
  icon: 'fa-solid fa-moon',
2974
+ svgIcon: 'night.svg',
2558
2975
  color: '#5d639e',
2559
2976
  },
2560
2977
  partlyCloudy: {
2561
2978
  id: 'partlyCloudy',
2562
2979
  name: 'Partly Cloudy',
2563
2980
  icon: 'fa-solid fa-cloud-sun',
2981
+ svgIcon: 'cloudy-day-3.svg',
2564
2982
  color: '#6ba4e8',
2565
2983
  },
2566
2984
  partlyCloudyNight: {
2567
2985
  id: 'partlyCloudyNight',
2568
2986
  name: 'Partly Cloudy Night',
2569
2987
  icon: 'fa-solid fa-cloud-moon',
2988
+ svgIcon: 'cloudy-night-3.svg',
2570
2989
  color: '#5d639e',
2571
2990
  },
2572
2991
  cloudy: {
2573
2992
  id: 'cloudy',
2574
2993
  name: 'Cloudy',
2575
2994
  icon: 'fa-solid fa-cloud',
2995
+ svgIcon: 'cloudy.svg',
2576
2996
  color: '#72869d',
2577
2997
  },
2578
2998
  rain: {
2579
2999
  id: 'rain',
2580
3000
  name: 'Rain',
2581
3001
  icon: 'fa-solid fa-cloud-rain',
3002
+ svgIcon: 'rainy-6.svg',
2582
3003
  color: '#3a74ad',
2583
3004
  },
2584
3005
  showers: {
2585
3006
  id: 'showers',
2586
3007
  name: 'Showers',
2587
3008
  icon: 'fa-solid fa-cloud-showers-heavy',
3009
+ svgIcon: 'rainy-7.svg',
2588
3010
  color: '#2c5d8c',
2589
3011
  },
2590
3012
  thunderstorm: {
2591
3013
  id: 'thunderstorm',
2592
3014
  name: 'Thunderstorm',
2593
3015
  icon: 'fa-solid fa-bolt-lightning',
3016
+ svgIcon: 'thunder.svg',
2594
3017
  color: '#8834af',
2595
3018
  },
2596
3019
  snow: {
2597
3020
  id: 'snow',
2598
3021
  name: 'Snow',
2599
3022
  icon: 'fa-solid fa-snowflake',
3023
+ svgIcon: 'snowy-6.svg',
2600
3024
  color: '#68a9cd',
2601
3025
  },
2602
3026
  mist: {
2603
3027
  id: 'mist',
2604
3028
  name: 'Mist',
2605
3029
  icon: 'fa-solid fa-smog',
3030
+ svgIcon: 'cloudy.svg',
2606
3031
  color: '#94a3b8',
2607
3032
  },
2608
3033
  };
@@ -2642,6 +3067,7 @@ class AXPWeatherApiAbstract {
2642
3067
  id: 'unknown',
2643
3068
  name: 'Unknown',
2644
3069
  icon: 'fa-solid fa-question',
3070
+ svgIcon: 'weather.svg',
2645
3071
  color: '#999999',
2646
3072
  };
2647
3073
  }
@@ -2708,10 +3134,10 @@ class AXPWeatherApiAbstract {
2708
3134
  getRandomInt(min, max) {
2709
3135
  return Math.floor(Math.random() * (max - min + 1)) + min;
2710
3136
  }
2711
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiAbstract, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2712
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiAbstract }); }
3137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiAbstract, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3138
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiAbstract }); }
2713
3139
  }
2714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiAbstract, decorators: [{
3140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiAbstract, decorators: [{
2715
3141
  type: Injectable
2716
3142
  }] });
2717
3143
 
@@ -2890,6 +3316,7 @@ class AXPWeatherApiMockService extends AXPWeatherApiAbstract {
2890
3316
  maxTempF,
2891
3317
  minTempC,
2892
3318
  minTempF,
3319
+ hour: [],
2893
3320
  };
2894
3321
  });
2895
3322
  return { ...data, forecast };
@@ -2904,10 +3331,10 @@ class AXPWeatherApiMockService extends AXPWeatherApiAbstract {
2904
3331
  // No-op for mock service
2905
3332
  console.log('API key setting is ignored in mock weather service');
2906
3333
  }
2907
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiMockService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2908
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiMockService }); }
3334
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiMockService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3335
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiMockService }); }
2909
3336
  }
2910
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiMockService, decorators: [{
3337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiMockService, decorators: [{
2911
3338
  type: Injectable
2912
3339
  }] });
2913
3340
 
@@ -3051,17 +3478,867 @@ class AXPWeatherApiService extends AXPWeatherApiAbstract {
3051
3478
  maxTempF: day.day?.maxtemp_f || 0,
3052
3479
  minTempC: day.day?.mintemp_c || 0,
3053
3480
  minTempF: day.day?.mintemp_f || 0,
3481
+ hour: day.hour.map((hour) => ({
3482
+ time: hour.time,
3483
+ condition: hour.condition.code,
3484
+ iconUrl: hour.condition.icon,
3485
+ tempC: hour.temp_c,
3486
+ tempF: hour.temp_f,
3487
+ })),
3054
3488
  };
3055
3489
  });
3056
3490
  return weatherData;
3057
3491
  }
3058
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3059
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiService }); }
3492
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3493
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiService }); }
3060
3494
  }
3061
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherApiService, decorators: [{
3495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherApiService, decorators: [{
3062
3496
  type: Injectable
3063
3497
  }] });
3064
3498
 
3499
+ class AXMAdvancedWeatherViewComponent extends AXPValueWidgetComponent {
3500
+ constructor() {
3501
+ super();
3502
+ this.weatherService = inject(AXPWeatherApiAbstract);
3503
+ this.weatherData = signal(null);
3504
+ this.isLoading = signal(true);
3505
+ this.hasError = signal(false);
3506
+ this.errorMessage = signal('');
3507
+ this.city = computed(() => this.options()['city'] || 'New York');
3508
+ this.temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');
3509
+ this.forecastDays = computed(() => (this.options()['forecastDays'] ?? 2) + 1);
3510
+ this.forecastHours = computed(() => this.options()['forecastHours'] ?? 5);
3511
+ this.iconCache = new Map();
3512
+ this.displayedForecast = computed(() => {
3513
+ this.forecastDays();
3514
+ const weatherData = this.weatherData();
3515
+ if (!weatherData?.forecast)
3516
+ return [];
3517
+ // Skip today's forecast for the bottom row display
3518
+ return weatherData.forecast.slice(1, this.forecastDays());
3519
+ });
3520
+ this.displayedHourlyForecast = computed(() => {
3521
+ this.forecastHours();
3522
+ const weatherData = this.weatherData();
3523
+ if (!weatherData?.forecast?.[0]?.hour)
3524
+ return [];
3525
+ const now = new Date();
3526
+ const currentHour = now.getHours();
3527
+ const todayHours = weatherData.forecast[0].hour;
3528
+ // Get hours after current hour for today
3529
+ const remainingTodayHours = todayHours.filter((hour) => {
3530
+ const hourTime = new Date(hour.time);
3531
+ return hourTime.getHours() > currentHour;
3532
+ });
3533
+ // If we need more hours, get from tomorrow
3534
+ let result = [...remainingTodayHours];
3535
+ if (result.length < this.forecastHours() && weatherData.forecast.length > 1) {
3536
+ const tomorrowHours = weatherData.forecast[1].hour;
3537
+ const neededFromTomorrow = this.forecastHours() - result.length;
3538
+ result = [...result, ...tomorrowHours.slice(0, neededFromTomorrow)];
3539
+ }
3540
+ // Limit to requested number of hours
3541
+ return result.slice(0, this.forecastHours());
3542
+ });
3543
+ effect(() => {
3544
+ if (this.options()) {
3545
+ this.loadWeatherData();
3546
+ }
3547
+ });
3548
+ }
3549
+ loadWeatherData() {
3550
+ if (!this.city()) {
3551
+ this.isLoading.set(false);
3552
+ return;
3553
+ }
3554
+ this.isLoading.set(true);
3555
+ this.hasError.set(false);
3556
+ this.errorMessage.set('');
3557
+ const requestOptions = {
3558
+ location: this.city(),
3559
+ tempUnit: this.temperatureUnit(),
3560
+ days: this.forecastDays(),
3561
+ };
3562
+ this.weatherService
3563
+ .getForecast(requestOptions)
3564
+ .pipe(catchError((error) => {
3565
+ this.handleError(error);
3566
+ return of(null);
3567
+ }), finalize(() => this.isLoading.set(false)))
3568
+ .subscribe((data) => {
3569
+ if (data) {
3570
+ this.weatherData.set(data);
3571
+ }
3572
+ });
3573
+ }
3574
+ handleError(error) {
3575
+ console.error('Advanced weather widget error:', error);
3576
+ this.hasError.set(true);
3577
+ this.errorMessage.set(error.message || 'Failed to load weather data');
3578
+ }
3579
+ getConditionIcon(conditionId) {
3580
+ if (!conditionId) {
3581
+ return '';
3582
+ }
3583
+ if (this.iconCache.has(conditionId)) {
3584
+ return this.iconCache.get(conditionId);
3585
+ }
3586
+ const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;
3587
+ const iconPath = `assets/images/weather/${svgIcon}`;
3588
+ this.iconCache.set(conditionId, iconPath);
3589
+ return iconPath;
3590
+ }
3591
+ getConditionName(conditionId) {
3592
+ if (!conditionId) {
3593
+ return 'Unknown';
3594
+ }
3595
+ const condition = this.weatherService.getCondition(conditionId);
3596
+ return condition?.name || 'Unknown';
3597
+ }
3598
+ getCurrentTemperature() {
3599
+ if (!this.weatherData())
3600
+ return 0;
3601
+ return this.temperatureUnit() === '°C' ? this.weatherData().current.tempC : this.weatherData().current.tempF;
3602
+ }
3603
+ getMaxTemp() {
3604
+ if (!this.weatherData()?.forecast?.[0])
3605
+ return 0;
3606
+ return this.temperatureUnit() === '°C'
3607
+ ? this.weatherData().forecast[0].maxTempC
3608
+ : this.weatherData().forecast[0].maxTempF;
3609
+ }
3610
+ getMinTemp() {
3611
+ if (!this.weatherData()?.forecast?.[0])
3612
+ return 0;
3613
+ return this.temperatureUnit() === '°C'
3614
+ ? this.weatherData().forecast[0].minTempC
3615
+ : this.weatherData().forecast[0].minTempF;
3616
+ }
3617
+ getForecastDayTemp(day) {
3618
+ if (!day)
3619
+ return 0;
3620
+ return this.temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF;
3621
+ }
3622
+ parseDate(dateStr) {
3623
+ return new Date(dateStr);
3624
+ }
3625
+ getDayName(date) {
3626
+ const today = new Date();
3627
+ today.setHours(0, 0, 0, 0);
3628
+ const tomorrow = new Date(today);
3629
+ tomorrow.setDate(tomorrow.getDate() + 1);
3630
+ const checkDate = new Date(date);
3631
+ checkDate.setHours(0, 0, 0, 0);
3632
+ if (checkDate.getTime() === today.getTime()) {
3633
+ return 'Today';
3634
+ }
3635
+ if (checkDate.getTime() === tomorrow.getTime()) {
3636
+ return 'Tomorrow';
3637
+ }
3638
+ const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
3639
+ return days[checkDate.getDay()];
3640
+ }
3641
+ getHourLabel(timeStr) {
3642
+ const time = new Date(timeStr);
3643
+ return time.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
3644
+ }
3645
+ getHourTemp(hour) {
3646
+ return this.temperatureUnit() === '°C' ? hour.tempC : hour.tempF;
3647
+ }
3648
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAdvancedWeatherViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3649
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMAdvancedWeatherViewComponent, isStandalone: true, selector: "ng-component", providers: [
3650
+ {
3651
+ provide: AXPWeatherApiAbstract,
3652
+ useClass: AXPWeatherApiService,
3653
+ },
3654
+ ], usesInheritance: true, ngImport: i0, template: `
3655
+ <div class="ax-size-full ax-p-6">
3656
+ @if (weatherData() && !isLoading() && !hasError()) {
3657
+ <div class="ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around">
3658
+ <div class="ax-flex ax-items-center ax-justify-around ax-w-full ax-gap-1 ax-flex-wrap">
3659
+ <div class="ax-flex ax-items-center ax-gap-2 ax-shrink-0">
3660
+ <img
3661
+ [src]="getConditionIcon(weatherData()!.current.condition)"
3662
+ class="ax-size-32 ax-object-cover -ax-m-8"
3663
+ [alt]="getConditionName(weatherData()!.current.condition)"
3664
+ loading="lazy"
3665
+ />
3666
+ <div class="ax-flex ax-flex-col ax-gap-1 ax-items-start">
3667
+ <span class="ax-text-lg ax-font-medium ax-text-muted">{{
3668
+ getConditionName(weatherData()!.current.condition)
3669
+ }}</span>
3670
+ <span class="ax-text-5xl" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)"
3671
+ >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3672
+ >
3673
+ </div>
3674
+ </div>
3675
+ <div class="ax-flex ax-flex-col ax-items-center ax-gap-2">
3676
+ <span class="ax-text-2xl ax-font-bold ax-capitalize">{{ city() }}</span>
3677
+ <div class="ax-flex ax-gap-4 ax-font-semibold ax-text-muted">
3678
+ <span
3679
+ >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3680
+ >
3681
+ <span
3682
+ >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3683
+ >
3684
+ </div>
3685
+ </div>
3686
+ </div>
3687
+
3688
+ <div class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0">
3689
+ @for (hour of displayedHourlyForecast(); track hour.time) {
3690
+ <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2">
3691
+ <span class="ax-text-sm ax-font-medium ax-text-muted">{{ getHourLabel(hour.time) }}</span>
3692
+ <img
3693
+ [src]="getConditionIcon(weatherData()!.forecast[0].condition)"
3694
+ class="ax-size-16 ax-object-cover -ax-m-4"
3695
+ [alt]="getConditionName(weatherData()!.forecast[0].condition)"
3696
+ />
3697
+ <span class="ax-text-lg ax-font-semibold"
3698
+ >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3699
+ >
3700
+ </div>
3701
+ }
3702
+ </div>
3703
+
3704
+ <div class="ax-mt-2 ax-w-full">
3705
+ <div
3706
+ class="ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start"
3707
+ >
3708
+ @for (day of displayedForecast(); track day.date) {
3709
+ <span class="ax-font-medium">{{ getDayName(parseDate(day.date)) }}</span>
3710
+ <div class="ax-flex ax-items-center ax-justify-center">
3711
+ <img
3712
+ [src]="getConditionIcon(day.condition)"
3713
+ class="ax-w-8 ax-h-8 ax-scale-[2]"
3714
+ [alt]="getConditionName(day.condition)"
3715
+ />
3716
+ </div>
3717
+ <span class="ax-font-semibold"
3718
+ >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3719
+ >
3720
+ <span class="ax-text-muted"
3721
+ >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3722
+ >
3723
+ } @empty {
3724
+ <span class="ax-text-muted">No forecast data available</span>
3725
+ }
3726
+ </div>
3727
+ </div>
3728
+ </div>
3729
+ } @else {
3730
+ <div class="ax-flex ax-size-full ax-flex-col ax-gap-6" [attr.aria-busy]="isLoading()">
3731
+ @if (isLoading()) {
3732
+ <!-- Current weather skeleton -->
3733
+ <div class="ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4">
3734
+ <div class="ax-flex ax-items-center ax-gap-4">
3735
+ <ax-skeleton class="ax-w-20 ax-h-20 ax-rounded-full"></ax-skeleton>
3736
+ <div class="ax-flex ax-flex-col ax-gap-2">
3737
+ <ax-skeleton class="ax-w-24 ax-h-6 ax-rounded"></ax-skeleton>
3738
+ <ax-skeleton class="ax-w-32 ax-h-12 ax-rounded"></ax-skeleton>
3739
+ </div>
3740
+ </div>
3741
+ <div class="ax-flex ax-flex-col ax-items-end ax-gap-2">
3742
+ <ax-skeleton class="ax-w-28 ax-h-8 ax-rounded"></ax-skeleton>
3743
+ <div class="ax-flex ax-gap-2">
3744
+ <ax-skeleton class="ax-w-12 ax-h-6 ax-rounded"></ax-skeleton>
3745
+ <ax-skeleton class="ax-w-12 ax-h-6 ax-rounded"></ax-skeleton>
3746
+ </div>
3747
+ </div>
3748
+ </div>
3749
+
3750
+ <!-- Hourly forecast skeleton -->
3751
+ <div class="ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around">
3752
+ @for (i of [1, 2, 3, 4, 5]; track i) {
3753
+ <div class="ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16">
3754
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
3755
+ <ax-skeleton class="ax-w-10 ax-h-10 ax-rounded-full ax-my-1"></ax-skeleton>
3756
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3757
+ </div>
3758
+ }
3759
+ </div>
3760
+
3761
+ <!-- Daily forecast skeleton -->
3762
+ <div class="ax-mt-2 ax-w-full">
3763
+ <div class="ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center">
3764
+ @for (i of [1, 2]; track i) {
3765
+ <ax-skeleton class="ax-w-20 ax-h-6 ax-rounded"></ax-skeleton>
3766
+ <ax-skeleton class="ax-w-8 ax-h-8 ax-rounded-full"></ax-skeleton>
3767
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3768
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3769
+ }
3770
+ </div>
3771
+ </div>
3772
+ } @else if (hasError()) {
3773
+ <!-- No data state (not loading, no error) -->
3774
+ <div class="axp-weather-no-data-state">
3775
+ <i class="fa-solid fa-cloud-sun"></i>
3776
+ <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>
3777
+ <ax-button
3778
+ [look]="'outline'"
3779
+ [color]="'secondary'"
3780
+ [text]="'weather.refresh-weather' | translate: { scope: 'dashboard' } | async"
3781
+ (onClick)="loadWeatherData()"
3782
+ ></ax-button>
3783
+ </div>
3784
+ }
3785
+ </div>
3786
+ }
3787
+ </div>
3788
+ `, isInline: true, styles: [":host{display:block;width:100%;height:100%}.ax-text-muted{color:gray}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}sup{font-weight:300;position:relative;top:-.3em;font-size:.6em;margin-left:.1em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2$3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3789
+ }
3790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAdvancedWeatherViewComponent, decorators: [{
3791
+ type: Component,
3792
+ args: [{ template: `
3793
+ <div class="ax-size-full ax-p-6">
3794
+ @if (weatherData() && !isLoading() && !hasError()) {
3795
+ <div class="ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around">
3796
+ <div class="ax-flex ax-items-center ax-justify-around ax-w-full ax-gap-1 ax-flex-wrap">
3797
+ <div class="ax-flex ax-items-center ax-gap-2 ax-shrink-0">
3798
+ <img
3799
+ [src]="getConditionIcon(weatherData()!.current.condition)"
3800
+ class="ax-size-32 ax-object-cover -ax-m-8"
3801
+ [alt]="getConditionName(weatherData()!.current.condition)"
3802
+ loading="lazy"
3803
+ />
3804
+ <div class="ax-flex ax-flex-col ax-gap-1 ax-items-start">
3805
+ <span class="ax-text-lg ax-font-medium ax-text-muted">{{
3806
+ getConditionName(weatherData()!.current.condition)
3807
+ }}</span>
3808
+ <span class="ax-text-5xl" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)"
3809
+ >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3810
+ >
3811
+ </div>
3812
+ </div>
3813
+ <div class="ax-flex ax-flex-col ax-items-center ax-gap-2">
3814
+ <span class="ax-text-2xl ax-font-bold ax-capitalize">{{ city() }}</span>
3815
+ <div class="ax-flex ax-gap-4 ax-font-semibold ax-text-muted">
3816
+ <span
3817
+ >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3818
+ >
3819
+ <span
3820
+ >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3821
+ >
3822
+ </div>
3823
+ </div>
3824
+ </div>
3825
+
3826
+ <div class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0">
3827
+ @for (hour of displayedHourlyForecast(); track hour.time) {
3828
+ <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2">
3829
+ <span class="ax-text-sm ax-font-medium ax-text-muted">{{ getHourLabel(hour.time) }}</span>
3830
+ <img
3831
+ [src]="getConditionIcon(weatherData()!.forecast[0].condition)"
3832
+ class="ax-size-16 ax-object-cover -ax-m-4"
3833
+ [alt]="getConditionName(weatherData()!.forecast[0].condition)"
3834
+ />
3835
+ <span class="ax-text-lg ax-font-semibold"
3836
+ >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3837
+ >
3838
+ </div>
3839
+ }
3840
+ </div>
3841
+
3842
+ <div class="ax-mt-2 ax-w-full">
3843
+ <div
3844
+ class="ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start"
3845
+ >
3846
+ @for (day of displayedForecast(); track day.date) {
3847
+ <span class="ax-font-medium">{{ getDayName(parseDate(day.date)) }}</span>
3848
+ <div class="ax-flex ax-items-center ax-justify-center">
3849
+ <img
3850
+ [src]="getConditionIcon(day.condition)"
3851
+ class="ax-w-8 ax-h-8 ax-scale-[2]"
3852
+ [alt]="getConditionName(day.condition)"
3853
+ />
3854
+ </div>
3855
+ <span class="ax-font-semibold"
3856
+ >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3857
+ >
3858
+ <span class="ax-text-muted"
3859
+ >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
3860
+ >
3861
+ } @empty {
3862
+ <span class="ax-text-muted">No forecast data available</span>
3863
+ }
3864
+ </div>
3865
+ </div>
3866
+ </div>
3867
+ } @else {
3868
+ <div class="ax-flex ax-size-full ax-flex-col ax-gap-6" [attr.aria-busy]="isLoading()">
3869
+ @if (isLoading()) {
3870
+ <!-- Current weather skeleton -->
3871
+ <div class="ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4">
3872
+ <div class="ax-flex ax-items-center ax-gap-4">
3873
+ <ax-skeleton class="ax-w-20 ax-h-20 ax-rounded-full"></ax-skeleton>
3874
+ <div class="ax-flex ax-flex-col ax-gap-2">
3875
+ <ax-skeleton class="ax-w-24 ax-h-6 ax-rounded"></ax-skeleton>
3876
+ <ax-skeleton class="ax-w-32 ax-h-12 ax-rounded"></ax-skeleton>
3877
+ </div>
3878
+ </div>
3879
+ <div class="ax-flex ax-flex-col ax-items-end ax-gap-2">
3880
+ <ax-skeleton class="ax-w-28 ax-h-8 ax-rounded"></ax-skeleton>
3881
+ <div class="ax-flex ax-gap-2">
3882
+ <ax-skeleton class="ax-w-12 ax-h-6 ax-rounded"></ax-skeleton>
3883
+ <ax-skeleton class="ax-w-12 ax-h-6 ax-rounded"></ax-skeleton>
3884
+ </div>
3885
+ </div>
3886
+ </div>
3887
+
3888
+ <!-- Hourly forecast skeleton -->
3889
+ <div class="ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around">
3890
+ @for (i of [1, 2, 3, 4, 5]; track i) {
3891
+ <div class="ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16">
3892
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
3893
+ <ax-skeleton class="ax-w-10 ax-h-10 ax-rounded-full ax-my-1"></ax-skeleton>
3894
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3895
+ </div>
3896
+ }
3897
+ </div>
3898
+
3899
+ <!-- Daily forecast skeleton -->
3900
+ <div class="ax-mt-2 ax-w-full">
3901
+ <div class="ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center">
3902
+ @for (i of [1, 2]; track i) {
3903
+ <ax-skeleton class="ax-w-20 ax-h-6 ax-rounded"></ax-skeleton>
3904
+ <ax-skeleton class="ax-w-8 ax-h-8 ax-rounded-full"></ax-skeleton>
3905
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3906
+ <ax-skeleton class="ax-w-10 ax-h-6 ax-rounded"></ax-skeleton>
3907
+ }
3908
+ </div>
3909
+ </div>
3910
+ } @else if (hasError()) {
3911
+ <!-- No data state (not loading, no error) -->
3912
+ <div class="axp-weather-no-data-state">
3913
+ <i class="fa-solid fa-cloud-sun"></i>
3914
+ <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>
3915
+ <ax-button
3916
+ [look]="'outline'"
3917
+ [color]="'secondary'"
3918
+ [text]="'weather.refresh-weather' | translate: { scope: 'dashboard' } | async"
3919
+ (onClick)="loadWeatherData()"
3920
+ ></ax-button>
3921
+ </div>
3922
+ }
3923
+ </div>
3924
+ }
3925
+ </div>
3926
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule], providers: [
3927
+ {
3928
+ provide: AXPWeatherApiAbstract,
3929
+ useClass: AXPWeatherApiService,
3930
+ },
3931
+ ], styles: [":host{display:block;width:100%;height:100%}.ax-text-muted{color:gray}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}sup{font-weight:300;position:relative;top:-.3em;font-size:.6em;margin-left:.1em}\n"] }]
3932
+ }], ctorParameters: () => [] });
3933
+
3934
+ var advancedWeather_component = /*#__PURE__*/Object.freeze({
3935
+ __proto__: null,
3936
+ AXMAdvancedWeatherViewComponent: AXMAdvancedWeatherViewComponent
3937
+ });
3938
+
3939
+ /**
3940
+ * Weather Widget Configuration
3941
+ * Provides customization options for displaying weather data and forecast
3942
+ */
3943
+ const AXPAdvancedWeatherWidget = {
3944
+ name: 'advanced-weather',
3945
+ title: 'Advanced Weather Widget',
3946
+ categories: [AXP_WIDGETS_UTILITY_CATEGORY],
3947
+ groups: [AXPWidgetGroupEnum.DashboardWidget],
3948
+ type: 'dashboard',
3949
+ icon: 'fa-light fa-cloud-sun',
3950
+ properties: [
3951
+ {
3952
+ name: 'temperatureUnit',
3953
+ title: '@dashboard:widgets.weather.temperature-unit',
3954
+ group: AXP_DATA_PROPERTY_GROUP,
3955
+ schema: {
3956
+ defaultValue: '°C',
3957
+ dataType: 'string',
3958
+ interface: {
3959
+ name: 'temperatureUnit',
3960
+ path: 'options.temperatureUnit',
3961
+ type: AXPWidgetsCatalog.select,
3962
+ options: {
3963
+ dataSource: ['°C', '°F'],
3964
+ },
3965
+ },
3966
+ },
3967
+ visible: true,
3968
+ },
3969
+ {
3970
+ name: 'city',
3971
+ title: '@dashboard:widgets.weather.city',
3972
+ group: AXP_DATA_PROPERTY_GROUP,
3973
+ schema: {
3974
+ defaultValue: 'New York',
3975
+ dataType: 'string',
3976
+ interface: {
3977
+ name: 'city',
3978
+ path: 'options.city',
3979
+ type: AXPWidgetsCatalog.text,
3980
+ },
3981
+ },
3982
+ visible: true,
3983
+ },
3984
+ {
3985
+ name: 'forecastHours',
3986
+ title: '@dashboard:widgets.weather.forecast-hours',
3987
+ group: AXP_DATA_PROPERTY_GROUP,
3988
+ schema: {
3989
+ defaultValue: 5,
3990
+ dataType: 'number',
3991
+ interface: {
3992
+ name: 'forecastHours',
3993
+ path: 'options.forecastHours',
3994
+ type: AXPWidgetsCatalog.number,
3995
+ options: {
3996
+ minValue: 1,
3997
+ maxValue: 8,
3998
+ step: 1,
3999
+ },
4000
+ },
4001
+ },
4002
+ visible: true,
4003
+ },
4004
+ {
4005
+ name: 'forecastDays',
4006
+ title: '@dashboard:widgets.weather.forecast-days',
4007
+ group: AXP_DATA_PROPERTY_GROUP,
4008
+ schema: {
4009
+ defaultValue: 2,
4010
+ dataType: 'number',
4011
+ interface: {
4012
+ name: 'forecastDays',
4013
+ path: 'options.forecastDays',
4014
+ type: AXPWidgetsCatalog.number,
4015
+ options: {
4016
+ minValue: 1,
4017
+ maxValue: 2,
4018
+ step: 1,
4019
+ },
4020
+ },
4021
+ },
4022
+ visible: true,
4023
+ },
4024
+ ],
4025
+ components: {
4026
+ view: {
4027
+ component: () => Promise.resolve().then(function () { return advancedWeather_component; }).then((c) => c.AXMAdvancedWeatherViewComponent),
4028
+ },
4029
+ },
4030
+ meta: {
4031
+ dimensions: {
4032
+ width: 3,
4033
+ height: 5,
4034
+ minWidth: 3,
4035
+ minHeight: 5,
4036
+ maxWidth: 5,
4037
+ maxHeight: 7,
4038
+ },
4039
+ },
4040
+ };
4041
+
4042
+ class AXMMinimalWeatherViewComponent extends AXPValueWidgetComponent {
4043
+ constructor() {
4044
+ super();
4045
+ this.weatherService = inject(AXPWeatherApiAbstract);
4046
+ this.weatherData = signal(null);
4047
+ this.isLoading = signal(true);
4048
+ this.hasError = signal(false);
4049
+ this.errorMessage = signal('');
4050
+ this.city = computed(() => this.options()['city'] || 'New York');
4051
+ this.temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');
4052
+ this.iconCache = new Map();
4053
+ effect(() => {
4054
+ if (this.options()) {
4055
+ this.loadWeatherData();
4056
+ }
4057
+ });
4058
+ }
4059
+ loadWeatherData() {
4060
+ if (!this.city()) {
4061
+ this.isLoading.set(false);
4062
+ return;
4063
+ }
4064
+ this.isLoading.set(true);
4065
+ this.hasError.set(false);
4066
+ this.errorMessage.set('');
4067
+ const requestOptions = {
4068
+ location: this.city(),
4069
+ tempUnit: this.temperatureUnit(),
4070
+ days: 1,
4071
+ };
4072
+ this.weatherService
4073
+ .getForecast(requestOptions)
4074
+ .pipe(catchError((error) => {
4075
+ this.handleError(error);
4076
+ return of(null);
4077
+ }), finalize(() => this.isLoading.set(false)))
4078
+ .subscribe((data) => {
4079
+ if (data) {
4080
+ this.weatherData.set(data);
4081
+ }
4082
+ });
4083
+ }
4084
+ handleError(error) {
4085
+ console.error('Minimal weather widget error:', error);
4086
+ this.hasError.set(true);
4087
+ this.errorMessage.set(error.message || 'Failed to load weather data');
4088
+ }
4089
+ getConditionIcon() {
4090
+ const conditionId = this.weatherData()?.current.condition || 'unknown';
4091
+ if (this.iconCache.has(conditionId)) {
4092
+ return this.iconCache.get(conditionId);
4093
+ }
4094
+ const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;
4095
+ const iconPath = `assets/images/weather/${svgIcon}`;
4096
+ this.iconCache.set(conditionId, iconPath);
4097
+ return iconPath;
4098
+ }
4099
+ getCurrentTemperature() {
4100
+ if (!this.weatherData())
4101
+ return 0;
4102
+ return this.temperatureUnit() === '°C' ? this.weatherData().current.tempC : this.weatherData().current.tempF;
4103
+ }
4104
+ getMaxTemp() {
4105
+ if (!this.weatherData()?.forecast?.[0])
4106
+ return 0;
4107
+ return this.temperatureUnit() === '°C'
4108
+ ? this.weatherData().forecast[0].maxTempC
4109
+ : this.weatherData().forecast[0].maxTempF;
4110
+ }
4111
+ getMinTemp() {
4112
+ if (!this.weatherData()?.forecast?.[0])
4113
+ return 0;
4114
+ return this.temperatureUnit() === '°C'
4115
+ ? this.weatherData().forecast[0].minTempC
4116
+ : this.weatherData().forecast[0].minTempF;
4117
+ }
4118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMMinimalWeatherViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMMinimalWeatherViewComponent, isStandalone: true, selector: "ng-component", providers: [
4120
+ {
4121
+ provide: AXPWeatherApiAbstract,
4122
+ useClass: AXPWeatherApiService,
4123
+ },
4124
+ ], usesInheritance: true, ngImport: i0, template: `
4125
+ @if (weatherData() && !isLoading() && !hasError()) {
4126
+ <div
4127
+ class="ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-gap-2 ax-justify-evenly weather-container ax-overflow-hidden"
4128
+ style="container-type: inline-size"
4129
+ [attr.aria-label]="'Current weather for ' + city()"
4130
+ >
4131
+ <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2">
4132
+ <img
4133
+ [src]="getConditionIcon()"
4134
+ class="ax-h-[180%] -ax-m-2"
4135
+ [alt]="weatherData()?.current?.condition + ' weather icon'"
4136
+ loading="lazy"
4137
+ />
4138
+ <span
4139
+ class="-ax-ms-2 temperature"
4140
+ style="font-size: max(20px, calc(32cqw - 25px)); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)"
4141
+ aria-live="polite"
4142
+ >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
4143
+ >
4144
+ </div>
4145
+ <div class="ax-text-start ax-ps-6">
4146
+ <div style="font-size: max(16px, calc(19cqw - 25px))" class="ax-mt-1">
4147
+ <span class="ax-font-bold ax-capitalize">{{ city() }}</span>
4148
+ </div>
4149
+ <div style="font-size: max(12px, calc(14cqw - 25px))" class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4150
+ <span aria-label="High temperature">
4151
+ H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4152
+ </span>
4153
+ <span aria-label="Low temperature">
4154
+ L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4155
+ </span>
4156
+ </div>
4157
+ </div>
4158
+ </div>
4159
+ } @else {
4160
+ <div class="ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-2 ax-justify-center" [attr.aria-busy]="isLoading()">
4161
+ @if (isLoading()) {
4162
+ <!-- Weather icon and temperature skeleton -->
4163
+ <div class="ax-flex ax-items-center ax-w-full ax-pt-2 ax-gap-8">
4164
+ <ax-skeleton class="ax-w-16 ax-h-12 ax-rounded-full"></ax-skeleton>
4165
+ <ax-skeleton class="ax-w-24 ax-h-8 ax-rounded -ax-ms-2"></ax-skeleton>
4166
+ </div>
4167
+
4168
+ <!-- City and temperature range skeleton -->
4169
+ <div class="ax-text-start ax-ps-6 ax-w-full">
4170
+ <div class="ax-mt-1">
4171
+ <ax-skeleton class="ax-w-24 ax-h-6 ax-rounded"></ax-skeleton>
4172
+ </div>
4173
+ <div class="ax-pt-2 ax-flex ax-gap-4">
4174
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
4175
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
4176
+ </div>
4177
+ </div>
4178
+ } @else if (hasError()) {
4179
+ <!-- No data state (not loading, no error) -->
4180
+ <div class="ax-flex ax-flex-col ax-gap-2 ax-justify-center ax-items-center ax-h-full ax-p-8">
4181
+ <i class="ax-text-3xl fa-solid fa-cloud-sun"></i>
4182
+ <p class="ax-text-sm">{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>
4183
+ <ax-button
4184
+ [look]="'outline'"
4185
+ [color]="'secondary'"
4186
+ [text]="'weather.refresh-weather' | translate: { scope: 'dashboard' } | async"
4187
+ (onClick)="loadWeatherData()"
4188
+ ></ax-button>
4189
+ </div>
4190
+ }
4191
+ </div>
4192
+ }
4193
+ `, isInline: true, styles: [":host{width:100%;height:100%}.weather-container{container-type:inline-size;transition:opacity .3s ease-in-out}.temperature{font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}@container (max-width: 130px){.weather-top{flex-direction:column!important;align-items:center!important;text-align:center}.temperature{margin-top:.5rem}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i2$3.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4194
+ }
4195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMMinimalWeatherViewComponent, decorators: [{
4196
+ type: Component,
4197
+ args: [{ template: `
4198
+ @if (weatherData() && !isLoading() && !hasError()) {
4199
+ <div
4200
+ class="ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-gap-2 ax-justify-evenly weather-container ax-overflow-hidden"
4201
+ style="container-type: inline-size"
4202
+ [attr.aria-label]="'Current weather for ' + city()"
4203
+ >
4204
+ <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2">
4205
+ <img
4206
+ [src]="getConditionIcon()"
4207
+ class="ax-h-[180%] -ax-m-2"
4208
+ [alt]="weatherData()?.current?.condition + ' weather icon'"
4209
+ loading="lazy"
4210
+ />
4211
+ <span
4212
+ class="-ax-ms-2 temperature"
4213
+ style="font-size: max(20px, calc(32cqw - 25px)); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)"
4214
+ aria-live="polite"
4215
+ >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span
4216
+ >
4217
+ </div>
4218
+ <div class="ax-text-start ax-ps-6">
4219
+ <div style="font-size: max(16px, calc(19cqw - 25px))" class="ax-mt-1">
4220
+ <span class="ax-font-bold ax-capitalize">{{ city() }}</span>
4221
+ </div>
4222
+ <div style="font-size: max(12px, calc(14cqw - 25px))" class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4223
+ <span aria-label="High temperature">
4224
+ H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4225
+ </span>
4226
+ <span aria-label="Low temperature">
4227
+ L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4228
+ </span>
4229
+ </div>
4230
+ </div>
4231
+ </div>
4232
+ } @else {
4233
+ <div class="ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-2 ax-justify-center" [attr.aria-busy]="isLoading()">
4234
+ @if (isLoading()) {
4235
+ <!-- Weather icon and temperature skeleton -->
4236
+ <div class="ax-flex ax-items-center ax-w-full ax-pt-2 ax-gap-8">
4237
+ <ax-skeleton class="ax-w-16 ax-h-12 ax-rounded-full"></ax-skeleton>
4238
+ <ax-skeleton class="ax-w-24 ax-h-8 ax-rounded -ax-ms-2"></ax-skeleton>
4239
+ </div>
4240
+
4241
+ <!-- City and temperature range skeleton -->
4242
+ <div class="ax-text-start ax-ps-6 ax-w-full">
4243
+ <div class="ax-mt-1">
4244
+ <ax-skeleton class="ax-w-24 ax-h-6 ax-rounded"></ax-skeleton>
4245
+ </div>
4246
+ <div class="ax-pt-2 ax-flex ax-gap-4">
4247
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
4248
+ <ax-skeleton class="ax-w-12 ax-h-4 ax-rounded"></ax-skeleton>
4249
+ </div>
4250
+ </div>
4251
+ } @else if (hasError()) {
4252
+ <!-- No data state (not loading, no error) -->
4253
+ <div class="ax-flex ax-flex-col ax-gap-2 ax-justify-center ax-items-center ax-h-full ax-p-8">
4254
+ <i class="ax-text-3xl fa-solid fa-cloud-sun"></i>
4255
+ <p class="ax-text-sm">{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>
4256
+ <ax-button
4257
+ [look]="'outline'"
4258
+ [color]="'secondary'"
4259
+ [text]="'weather.refresh-weather' | translate: { scope: 'dashboard' } | async"
4260
+ (onClick)="loadWeatherData()"
4261
+ ></ax-button>
4262
+ </div>
4263
+ }
4264
+ </div>
4265
+ }
4266
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule], providers: [
4267
+ {
4268
+ provide: AXPWeatherApiAbstract,
4269
+ useClass: AXPWeatherApiService,
4270
+ },
4271
+ ], styles: [":host{width:100%;height:100%}.weather-container{container-type:inline-size;transition:opacity .3s ease-in-out}.temperature{font-feature-settings:\"tnum\";font-variant-numeric:tabular-nums}@container (max-width: 130px){.weather-top{flex-direction:column!important;align-items:center!important;text-align:center}.temperature{margin-top:.5rem}}\n"] }]
4272
+ }], ctorParameters: () => [] });
4273
+
4274
+ var minimalWeather_component = /*#__PURE__*/Object.freeze({
4275
+ __proto__: null,
4276
+ AXMMinimalWeatherViewComponent: AXMMinimalWeatherViewComponent
4277
+ });
4278
+
4279
+ /**
4280
+ * Weather Widget Configuration
4281
+ * Provides customization options for displaying weather data and forecast
4282
+ */
4283
+ const AXPMinimalWeatherWidget = {
4284
+ name: 'minimal-weather',
4285
+ title: 'Minimal Weather Widget',
4286
+ categories: [AXP_WIDGETS_UTILITY_CATEGORY],
4287
+ groups: [AXPWidgetGroupEnum.DashboardWidget],
4288
+ type: 'dashboard',
4289
+ icon: 'fa-light fa-cloud-sun',
4290
+ properties: [
4291
+ {
4292
+ name: 'temperatureUnit',
4293
+ title: '@dashboard:widgets.weather.temperature-unit',
4294
+ group: AXP_DATA_PROPERTY_GROUP,
4295
+ schema: {
4296
+ defaultValue: '°C',
4297
+ dataType: 'string',
4298
+ interface: {
4299
+ name: 'temperatureUnit',
4300
+ path: 'options.temperatureUnit',
4301
+ type: AXPWidgetsCatalog.select,
4302
+ options: {
4303
+ dataSource: ['°C', '°F'],
4304
+ },
4305
+ },
4306
+ },
4307
+ visible: true,
4308
+ },
4309
+ {
4310
+ name: 'city',
4311
+ title: '@dashboard:widgets.weather.city',
4312
+ group: AXP_DATA_PROPERTY_GROUP,
4313
+ schema: {
4314
+ defaultValue: 'New York',
4315
+ dataType: 'string',
4316
+ interface: {
4317
+ name: 'city',
4318
+ path: 'options.city',
4319
+ type: AXPWidgetsCatalog.text,
4320
+ },
4321
+ },
4322
+ visible: true,
4323
+ },
4324
+ ],
4325
+ components: {
4326
+ view: {
4327
+ component: () => Promise.resolve().then(function () { return minimalWeather_component; }).then((c) => c.AXMMinimalWeatherViewComponent),
4328
+ },
4329
+ },
4330
+ meta: {
4331
+ dimensions: {
4332
+ width: 2,
4333
+ height: 2,
4334
+ minWidth: 1,
4335
+ minHeight: 2,
4336
+ maxWidth: 4,
4337
+ maxHeight: 5,
4338
+ },
4339
+ },
4340
+ };
4341
+
3065
4342
  /**
3066
4343
  * Weather Widget Component
3067
4344
  * Displays current weather conditions and optional forecast data
@@ -3272,18 +4549,21 @@ class AXPWeatherWidgetViewComponent extends AXPValueWidgetComponent {
3272
4549
  return new Date(this.weatherData().current.lastUpdated).toLocaleTimeString();
3273
4550
  }
3274
4551
  /**
3275
- * Gets the icon class for a weather condition
3276
- * @param conditionId Weather condition ID
3277
- * @returns Font Awesome icon class
4552
+ * Gets the appropriate icon class for a weather condition
4553
+ * @param conditionId The ID of the weather condition
4554
+ * @returns The Font Awesome icon class string
3278
4555
  */
3279
4556
  getConditionIcon(conditionId) {
3280
- const condition = this.weatherService.getCondition(conditionId);
3281
- return condition?.icon || 'fa-solid fa-question';
4557
+ if (!conditionId) {
4558
+ conditionId = 'unknown';
4559
+ }
4560
+ const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;
4561
+ return `assets/images/weather/${svgIcon}`;
3282
4562
  }
3283
4563
  /**
3284
4564
  * Gets the display name for a weather condition
3285
- * @param conditionId Weather condition ID
3286
- * @returns Condition display name
4565
+ * @param conditionId The ID of the weather condition
4566
+ * @returns The translated display name
3287
4567
  */
3288
4568
  getConditionName(conditionId) {
3289
4569
  const condition = this.weatherService.getCondition(conditionId);
@@ -3347,22 +4627,22 @@ class AXPWeatherWidgetViewComponent extends AXPValueWidgetComponent {
3347
4627
  parseDate(dateStr) {
3348
4628
  return new Date(dateStr);
3349
4629
  }
3350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherWidgetViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3351
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPWeatherWidgetViewComponent, isStandalone: true, selector: "ng-component", providers: [
4630
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherWidgetViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXPWeatherWidgetViewComponent, isStandalone: true, selector: "ng-component", providers: [
3352
4632
  {
3353
4633
  provide: AXPWeatherApiAbstract,
3354
4634
  useClass: AXPWeatherApiService,
3355
4635
  },
3356
- ], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["containerElement"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <i\n [class]=\"getConditionIcon(weatherData()?.current?.condition || '')\"\n [style.color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></i>\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\n }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\n </div>\n <div\n class=\"axp-weather-forecast-icon\"\n [title]=\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\"\n >\n <i [class]=\"getConditionIcon(day.condition)\" [style.color]=\"getConditionColor(day.condition)\"></i>\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '\u00B0C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '\u00B0C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n [title]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);color:#fff;min-height:300px;background-color:#2c3e50}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-decoration.sunny{background:linear-gradient(135deg,#ff7e00,#f7d358)}.axp-weather-decoration.partlyCloudy{background:linear-gradient(135deg,#7ba2e7,#b4d2f7)}.axp-weather-decoration.cloudy{background:linear-gradient(135deg,#717e8c,#919eab)}.axp-weather-decoration.rain{background:linear-gradient(135deg,#6a8caf,#567a9e)}.axp-weather-decoration.snow{background:linear-gradient(135deg,#99b3cc,#c6d4e1)}.axp-weather-decoration.thunder{background:linear-gradient(135deg,#425777,#2c3e50)}.axp-weather-decoration.mist{background:linear-gradient(135deg,#94a3b8,#cbd5e1)}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.5))}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.75}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;background-color:rgba(0,0,0,.15);border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;color:rgba(255,255,255,.8);margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{margin-bottom:.5rem;background-color:rgba(0,0,0,.15);border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;background-color:rgba(255,255,255,.1);border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{background-color:rgba(255,255,255,.15);transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: HttpClientModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4636
+ ], viewQueries: [{ propertyName: "containerEl", first: true, predicate: ["containerElement"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <img [src]=\"getConditionIcon(weatherData()?.current?.condition || '')\" />\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\n }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\n </div>\n <div\n class=\"axp-weather-forecast-icon\"\n [title]=\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\"\n >\n <img [src]=\"getConditionIcon(day.condition || '')\" />\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '\u00B0C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '\u00B0C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n [title]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);min-height:300px}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2;scale:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.4}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));margin-bottom:.5rem;border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: HttpClientModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3357
4637
  }
3358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPWeatherWidgetViewComponent, decorators: [{
4638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPWeatherWidgetViewComponent, decorators: [{
3359
4639
  type: Component,
3360
4640
  args: [{ standalone: true, imports: [CommonModule, AXDateTimeModule, AXFormatModule, HttpClientModule, AXTranslationModule], providers: [
3361
4641
  {
3362
4642
  provide: AXPWeatherApiAbstract,
3363
4643
  useClass: AXPWeatherApiService,
3364
4644
  },
3365
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <i\n [class]=\"getConditionIcon(weatherData()?.current?.condition || '')\"\n [style.color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></i>\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\n }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\n </div>\n <div\n class=\"axp-weather-forecast-icon\"\n [title]=\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\"\n >\n <i [class]=\"getConditionIcon(day.condition)\" [style.color]=\"getConditionColor(day.condition)\"></i>\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '\u00B0C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '\u00B0C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n [title]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);color:#fff;min-height:300px;background-color:#2c3e50}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-decoration.sunny{background:linear-gradient(135deg,#ff7e00,#f7d358)}.axp-weather-decoration.partlyCloudy{background:linear-gradient(135deg,#7ba2e7,#b4d2f7)}.axp-weather-decoration.cloudy{background:linear-gradient(135deg,#717e8c,#919eab)}.axp-weather-decoration.rain{background:linear-gradient(135deg,#6a8caf,#567a9e)}.axp-weather-decoration.snow{background:linear-gradient(135deg,#99b3cc,#c6d4e1)}.axp-weather-decoration.thunder{background:linear-gradient(135deg,#425777,#2c3e50)}.axp-weather-decoration.mist{background:linear-gradient(135deg,#94a3b8,#cbd5e1)}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.5))}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.75}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;background-color:rgba(0,0,0,.15);border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;color:rgba(255,255,255,.8);margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{margin-bottom:.5rem;background-color:rgba(0,0,0,.15);border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;background-color:rgba(255,255,255,.1);border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{background-color:rgba(255,255,255,.15);transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\n"] }]
4645
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <img [src]=\"getConditionIcon(weatherData()?.current?.condition || '')\" />\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\n }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\n </div>\n <div\n class=\"axp-weather-forecast-icon\"\n [title]=\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\"\n >\n <img [src]=\"getConditionIcon(day.condition || '')\" />\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '\u00B0C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '\u00B0C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n [title]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);min-height:300px}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2;scale:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.4}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));margin-bottom:.5rem;border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\n"] }]
3366
4646
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
3367
4647
 
3368
4648
  var weatherWidget_component = /*#__PURE__*/Object.freeze({
@@ -3677,8 +4957,8 @@ class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {
3677
4957
  cls[`ax-text-white`] = true;
3678
4958
  return cls;
3679
4959
  }
3680
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
3681
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXPDashboardShortcutWidgetViewComponent, isStandalone: true, selector: "ng-component", host: { properties: { "style": "this.__style", "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
4960
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4961
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXPDashboardShortcutWidgetViewComponent, isStandalone: true, selector: "ng-component", host: { properties: { "style": "this.__style", "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
3682
4962
  @if (item()) {
3683
4963
  <div
3684
4964
  class="ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden "
@@ -3705,9 +4985,9 @@ class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {
3705
4985
  }}</span>
3706
4986
  </div>
3707
4987
  }
3708
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4988
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3709
4989
  }
3710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, decorators: [{
4990
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, decorators: [{
3711
4991
  type: Component,
3712
4992
  args: [{
3713
4993
  template: `
@@ -3860,9 +5140,9 @@ function createAppRoute() {
3860
5140
  };
3861
5141
  }
3862
5142
  class AXMDashboardManagementModule {
3863
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3864
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardManagementModule, imports: [i3$1.AXPLayoutBuilderModule] }); }
3865
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardManagementModule, providers: [
5143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5144
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardManagementModule, imports: [i3$2.AXPLayoutBuilderModule] }); }
5145
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardManagementModule, providers: [
3866
5146
  {
3867
5147
  provide: AXMDashboardService,
3868
5148
  useClass: AXMDashboardServiceImpl,
@@ -3901,14 +5181,18 @@ class AXMDashboardManagementModule {
3901
5181
  AXPBarChartWidget,
3902
5182
  AXPLineChartWidget,
3903
5183
  AXPGaugeChartWidget,
5184
+ //utility
3904
5185
  AXPStickyNoteWidget,
3905
5186
  AXPClockCalendarWidget,
3906
5187
  AXPWeatherWidget,
3907
5188
  AXPTaskListWidget,
5189
+ AXPMinimalWeatherWidget,
5190
+ AXPAdvancedWeatherWidget,
5191
+ AXPAnalogClockWidget,
3908
5192
  ],
3909
5193
  })] }); }
3910
5194
  }
3911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardManagementModule, decorators: [{
5195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardManagementModule, decorators: [{
3912
5196
  type: NgModule,
3913
5197
  args: [{
3914
5198
  imports: [
@@ -3920,10 +5204,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
3920
5204
  AXPBarChartWidget,
3921
5205
  AXPLineChartWidget,
3922
5206
  AXPGaugeChartWidget,
5207
+ //utility
3923
5208
  AXPStickyNoteWidget,
3924
5209
  AXPClockCalendarWidget,
3925
5210
  AXPWeatherWidget,
3926
5211
  AXPTaskListWidget,
5212
+ AXPMinimalWeatherWidget,
5213
+ AXPAdvancedWeatherWidget,
5214
+ AXPAnalogClockWidget,
3927
5215
  ],
3928
5216
  }),
3929
5217
  ],
@@ -3999,19 +5287,19 @@ class AXMDashboardWidgetWrapperComponent {
3999
5287
  log(event) {
4000
5288
  console.log('Dropdown event:', event);
4001
5289
  }
4002
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4003
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXMDashboardWidgetWrapperComponent, isStandalone: true, selector: "axm-dashboard-widget-wrapper", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasConfiguration: { classPropertyName: "hasConfiguration", publicName: "hasConfiguration", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: "isLocked", publicName: "isLocked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDelete: "onDelete", onConfiguration: "onConfiguration", onValueChanged: "onValueChanged", onOptionsChanged: "onOptionsChanged" }, queries: [{ propertyName: "widget", first: true, predicate: AXPWidgetRendererDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n @if(!isLocked()) {\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n (touchstart)=\"isDropdownOpen.set(true)\"\n >\n <ax-button class=\"ax-sm ax-main-button\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item [data]=\"'delete'\" [text]=\"(t('delete') | async) || 'delete'\" color=\"danger\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.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: i1$2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$2.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: AXDropdownModule }, { kind: "component", type: i3$2.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i2$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5290
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5291
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMDashboardWidgetWrapperComponent, isStandalone: true, selector: "axm-dashboard-widget-wrapper", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hasConfiguration: { classPropertyName: "hasConfiguration", publicName: "hasConfiguration", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: "isLocked", publicName: "isLocked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDelete: "onDelete", onConfiguration: "onConfiguration", onValueChanged: "onValueChanged", onOptionsChanged: "onOptionsChanged" }, queries: [{ propertyName: "widget", first: true, predicate: AXPWidgetRendererDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n @if(!isLocked()) {\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n (touchstart)=\"isDropdownOpen.set(true)\"\n >\n <ax-button class=\"ax-sm ax-main-button\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item [data]=\"'delete'\" [text]=\"(t('delete') | async) || 'delete'\" color=\"danger\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.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: i1$2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$2.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: AXDropdownModule }, { kind: "component", type: i3$3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4004
5292
  }
4005
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, decorators: [{
5293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, decorators: [{
4006
5294
  type: Component,
4007
5295
  args: [{ selector: 'axm-dashboard-widget-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule], standalone: true, template: "<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n @if(!isLocked()) {\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n (touchstart)=\"isDropdownOpen.set(true)\"\n >\n <ax-button class=\"ax-sm ax-main-button\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item [data]=\"'delete'\" [text]=\"(t('delete') | async) || 'delete'\" color=\"danger\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
4008
5296
  }] });
4009
5297
 
4010
- const path = 'home:dashboard:';
4011
- var AXPHomeDashboardSetting;
5298
+ const path$1 = 'home:dashboard:';
5299
+ var AXPHomeDashboardSetting$1;
4012
5300
  (function (AXPHomeDashboardSetting) {
4013
5301
  AXPHomeDashboardSetting["CurrentDashboard"] = "home:dashboard:current-dashboard";
4014
- })(AXPHomeDashboardSetting || (AXPHomeDashboardSetting = {}));
5302
+ })(AXPHomeDashboardSetting$1 || (AXPHomeDashboardSetting$1 = {}));
4015
5303
 
4016
5304
  class AXMAddDashboardPopup extends AXBasePageComponent {
4017
5305
  constructor() {
@@ -4070,8 +5358,8 @@ class AXMAddDashboardPopup extends AXBasePageComponent {
4070
5358
  isCanceled,
4071
5359
  });
4072
5360
  }
4073
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMAddDashboardPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4074
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXMAddDashboardPopup, isStandalone: true, selector: "ng-component", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, selectedRoleIds: { classPropertyName: "selectedRoleIds", publicName: "selectedRoleIds", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: "isLocked", publicName: "isLocked", isSignal: true, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange", description: "descriptionChange", selectedRoleIds: "selectedRoleIdsChange", isDisabled: "isDisabledChange", isLocked: "isLockedChange", isAdmin: "isAdminChange" }, usesInheritance: true, ngImport: i0, template: `
5361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAddDashboardPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5362
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMAddDashboardPopup, isStandalone: true, selector: "ng-component", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, selectedRoleIds: { classPropertyName: "selectedRoleIds", publicName: "selectedRoleIds", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: "isLocked", publicName: "isLocked", isSignal: true, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange", description: "descriptionChange", selectedRoleIds: "selectedRoleIdsChange", isDisabled: "isDisabledChange", isLocked: "isLockedChange", isAdmin: "isAdminChange" }, usesInheritance: true, ngImport: i0, template: `
4075
5363
  <div class="ax-card-body ax-p-4">
4076
5364
  <div class="ax-flex ax-flex-col ax-gap-2 ax-pb-4">
4077
5365
  <p class="ax-font-semibold">{{ 'title' | translate | async }}</p>
@@ -4127,9 +5415,9 @@ class AXMAddDashboardPopup extends AXBasePageComponent {
4127
5415
  </ax-button>
4128
5416
  </ax-suffix>
4129
5417
  </ax-footer>
4130
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3$3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$2.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: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$3.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i7.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "component", type: i8.AXSwitchComponent, selector: "ax-switch", inputs: ["disabled", "readonly", "color", "tabIndex", "value", "name", "isLoading"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged", "readonlyChange", "disabledChange"] }] }); }
5418
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3$4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$2.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: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i7.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSwitchModule }, { kind: "component", type: i8.AXSwitchComponent, selector: "ax-switch", inputs: ["disabled", "readonly", "color", "tabIndex", "value", "name", "isLoading"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged", "readonlyChange", "disabledChange"] }] }); }
4131
5419
  }
4132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMAddDashboardPopup, decorators: [{
5420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAddDashboardPopup, decorators: [{
4133
5421
  type: Component,
4134
5422
  args: [{
4135
5423
  template: `
@@ -4221,8 +5509,8 @@ class AXMConfigurationPopup extends AXBasePageComponent {
4221
5509
  handlePropertyChange(event) {
4222
5510
  this.widgetData.set(event.values);
4223
5511
  }
4224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMConfigurationPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXMConfigurationPopup, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
5512
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMConfigurationPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5513
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMConfigurationPopup, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
4226
5514
  @if(widget) {
4227
5515
  <div class="ax-px-1">
4228
5516
  <axp-widget-property-viewer (onChanged)="handlePropertyChange($event)" [widget]="widget">
@@ -4240,7 +5528,7 @@ class AXMConfigurationPopup extends AXBasePageComponent {
4240
5528
  </ax-footer>
4241
5529
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$2.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: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget", "mode"], outputs: ["onChanged"] }] }); }
4242
5530
  }
4243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMConfigurationPopup, decorators: [{
5531
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMConfigurationPopup, decorators: [{
4244
5532
  type: Component,
4245
5533
  args: [{
4246
5534
  template: `
@@ -4307,10 +5595,10 @@ class AXMDashboardPopupService {
4307
5595
  }
4308
5596
  return rest.widget;
4309
5597
  }
4310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardPopupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4311
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardPopupService, providedIn: 'root' }); }
5598
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardPopupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5599
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardPopupService, providedIn: 'root' }); }
4312
5600
  }
4313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardPopupService, decorators: [{
5601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardPopupService, decorators: [{
4314
5602
  type: Injectable,
4315
5603
  args: [{ providedIn: 'root' }]
4316
5604
  }] });
@@ -4441,7 +5729,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4441
5729
  const dashboards = dashboardModels.map(modelToDashboardLayout);
4442
5730
  const currentDashboardId = await settingService
4443
5731
  .scope(AXPPlatformScope.User)
4444
- .get(AXPHomeDashboardSetting.CurrentDashboard);
5732
+ .get(AXPHomeDashboardSetting$1.CurrentDashboard);
4445
5733
  let newCurrentDashboardId = null;
4446
5734
  if (dashboards.length > 0) {
4447
5735
  const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);
@@ -4449,7 +5737,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4449
5737
  if (!dashboardExists) {
4450
5738
  settingService
4451
5739
  .scope(AXPPlatformScope.User)
4452
- .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);
5740
+ .set(AXPHomeDashboardSetting$1.CurrentDashboard, newCurrentDashboardId);
4453
5741
  }
4454
5742
  }
4455
5743
  patchState(store, {
@@ -4467,7 +5755,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4467
5755
  return {
4468
5756
  setCurrentDashboard(dashboardId) {
4469
5757
  patchState(store, { currentDashboardId: dashboardId });
4470
- settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);
5758
+ settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting$1.CurrentDashboard, dashboardId);
4471
5759
  },
4472
5760
  async addDashboard() {
4473
5761
  try {
@@ -4497,7 +5785,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4497
5785
  });
4498
5786
  settingService
4499
5787
  .scope(AXPPlatformScope.User)
4500
- .set(AXPHomeDashboardSetting.CurrentDashboard, dashboardWithMetadata.id);
5788
+ .set(AXPHomeDashboardSetting$1.CurrentDashboard, dashboardWithMetadata.id);
4501
5789
  }
4502
5790
  catch (error) {
4503
5791
  console.error('Error adding dashboard:', error);
@@ -4622,7 +5910,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4622
5910
  if (newCurrentDashboardId) {
4623
5911
  settingService
4624
5912
  .scope(AXPPlatformScope.User)
4625
- .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);
5913
+ .set(AXPHomeDashboardSetting$1.CurrentDashboard, newCurrentDashboardId);
4626
5914
  }
4627
5915
  }
4628
5916
  patchState(store, {
@@ -4657,7 +5945,7 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
4657
5945
  dashboards: updatedDashboards,
4658
5946
  currentDashboardId: dashboard.id,
4659
5947
  });
4660
- settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);
5948
+ settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting$1.CurrentDashboard, dashboard.id);
4661
5949
  },
4662
5950
  async onGridChange(event) {
4663
5951
  if (!layoutThemeService.isDesktopDevice() || !store.selectedDashboard())
@@ -4971,17 +6259,17 @@ class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent {
4971
6259
  break;
4972
6260
  }
4973
6261
  }
4974
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardHomeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXMDashboardHomeComponent, isStandalone: true, selector: "axm-dashboard-home", providers: [
6262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardHomeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6263
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMDashboardHomeComponent, isStandalone: true, selector: "axm-dashboard-home", providers: [
4976
6264
  AXPDesignerService,
4977
6265
  AXMDashboardStore,
4978
6266
  {
4979
6267
  provide: AXPPageLayoutBase,
4980
6268
  useExisting: AXMDashboardHomeComponent,
4981
6269
  },
4982
- ], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n <!-- Loading State -->\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.currentLayoutOptions()\" (onChange)=\"store.onGridChange($event)\">\n <!-- No Dashboards State -->\n @if(!store.dashboards() || store.dashboards().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Selected Dashboard State -->\n @else if (!store.selectedDashboard()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Widgets State -->\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- Widgets Grid -->\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget [options]=\"widget.config\">\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important;--ax-comp-grid-layout-stack-item-content-bg-color: var(--ax-sys-color-lightest-surface) }\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXGridLayoutBuilderModule }, { kind: "component", type: i4$1.AXGridLayoutContainerComponent, selector: "ax-grid-layout-container", inputs: ["options", "isEmpty"], outputs: ["onAdded", "onRemoved", "onWidgetChange", "onChange", "onRender", "isEmptyChange"] }, { kind: "component", type: i4$1.AXGridLayoutWidgetComponent, selector: "ax-grid-layout-widget", inputs: ["options"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i2$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: AXMDashboardWidgetWrapperComponent, selector: "axm-dashboard-widget-wrapper", inputs: ["title", "hasConfiguration", "isLocked"], outputs: ["onDelete", "onConfiguration", "onValueChanged", "onOptionsChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6270
+ ], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n <!-- Loading State -->\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.currentLayoutOptions()\" (onChange)=\"store.onGridChange($event)\">\n <!-- No Dashboards State -->\n @if(!store.dashboards() || store.dashboards().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Selected Dashboard State -->\n @else if (!store.selectedDashboard()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Widgets State -->\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- Widgets Grid -->\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget\n [options]=\"widget.config\"\n class=\"dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\"\n >\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2$4.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXGridLayoutBuilderModule }, { kind: "component", type: i4$1.AXGridLayoutContainerComponent, selector: "ax-grid-layout-container", inputs: ["options", "isEmpty"], outputs: ["onAdded", "onRemoved", "onWidgetChange", "onChange", "onRender", "isEmptyChange"] }, { kind: "component", type: i4$1.AXGridLayoutWidgetComponent, selector: "ax-grid-layout-widget", inputs: ["options"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: AXMDashboardWidgetWrapperComponent, selector: "axm-dashboard-widget-wrapper", inputs: ["title", "hasConfiguration", "isLocked"], outputs: ["onDelete", "onConfiguration", "onValueChanged", "onOptionsChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4983
6271
  }
4984
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMDashboardHomeComponent, decorators: [{
6272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardHomeComponent, decorators: [{
4985
6273
  type: Component,
4986
6274
  args: [{ selector: 'axm-dashboard-home', standalone: true, imports: [
4987
6275
  CommonModule,
@@ -5005,7 +6293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
5005
6293
  provide: AXPPageLayoutBase,
5006
6294
  useExisting: AXMDashboardHomeComponent,
5007
6295
  },
5008
- ], template: "<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n <!-- Loading State -->\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.currentLayoutOptions()\" (onChange)=\"store.onGridChange($event)\">\n <!-- No Dashboards State -->\n @if(!store.dashboards() || store.dashboards().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Selected Dashboard State -->\n @else if (!store.selectedDashboard()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Widgets State -->\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- Widgets Grid -->\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget [options]=\"widget.config\">\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important;--ax-comp-grid-layout-stack-item-content-bg-color: var(--ax-sys-color-lightest-surface) }\n"] }]
6296
+ ], template: "<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n <!-- Loading State -->\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.currentLayoutOptions()\" (onChange)=\"store.onGridChange($event)\">\n <!-- No Dashboards State -->\n @if(!store.dashboards() || store.dashboards().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Selected Dashboard State -->\n @else if (!store.selectedDashboard()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Widgets State -->\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- Widgets Grid -->\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget\n [options]=\"widget.config\"\n class=\"dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\"\n >\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}\n"] }]
5009
6297
  }] });
5010
6298
 
5011
6299
  var homeDashboard = /*#__PURE__*/Object.freeze({
@@ -5013,9 +6301,15 @@ var homeDashboard = /*#__PURE__*/Object.freeze({
5013
6301
  AXMDashboardHomeComponent: AXMDashboardHomeComponent
5014
6302
  });
5015
6303
 
6304
+ const path = 'home:dashboard:';
6305
+ var AXPHomeDashboardSetting;
6306
+ (function (AXPHomeDashboardSetting) {
6307
+ AXPHomeDashboardSetting["CurrentDashboard"] = "home:dashboard:current-dashboard";
6308
+ })(AXPHomeDashboardSetting || (AXPHomeDashboardSetting = {}));
6309
+
5016
6310
  /**
5017
6311
  * Generated bundle index. Do not edit.
5018
6312
  */
5019
6313
 
5020
- export { AXMDashboardHomeComponent, AXMDashboardManagementModule, AXMDashboardService, AXMDashboardServiceImpl, AXMDashboardStore, AXPBarChartWidget, AXPBarChartWidgetViewComponent, AXPClockCalendarWidget, AXPClockCalendarWidgetViewComponent, AXPDonutChartWidget, AXPDonutChartWidgetViewComponent, AXPGaugeChartWidget, AXPGaugeChartWidgetViewComponent, AXPLineChartWidget, AXPLineChartWidgetViewComponent, AXPStickyNoteWidget, AXPStickyNoteWidgetViewComponent, AXPTaskListWidget, AXPTaskListWidgetViewComponent, AXPWeatherApiAbstract, AXPWeatherApiMockService, AXPWeatherApiService, AXPWeatherWidget, AXPWeatherWidgetViewComponent, AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS, AXP_WIDGETS_CHART_CATEGORY, AXP_WIDGETS_UTILITY_CATEGORY, RootConfig, dashboardFactory };
6314
+ export { AXMAddDashboardPopup, AXMAdvancedWeatherViewComponent, AXMAnalogClockComponent, AXMClockWidgetViewComponent, AXMConfigurationPopup, AXMDashboardHomeComponent, AXMDashboardManagementModule, AXMDashboardPopupService, AXMDashboardService, AXMDashboardServiceImpl, AXMDashboardStore, AXMDashboardWidgetWrapperComponent, AXMMinimalWeatherViewComponent, AXPAdvancedWeatherWidget, AXPAnalogClockWidget, AXPBarChartWidget, AXPBarChartWidgetViewComponent, AXPClockCalendarWidget, AXPClockCalendarWidgetViewComponent, AXPDonutChartWidget, AXPDonutChartWidgetViewComponent, AXPGaugeChartWidget, AXPGaugeChartWidgetViewComponent, AXPHomeDashboardSetting, AXPLineChartWidget, AXPLineChartWidgetViewComponent, AXPMinimalWeatherWidget, AXPStickyNoteWidget, AXPStickyNoteWidgetViewComponent, AXPTaskListWidget, AXPTaskListWidgetViewComponent, AXPWeatherApiAbstract, AXPWeatherApiMockService, AXPWeatherApiService, AXPWeatherWidget, AXPWeatherWidgetViewComponent, AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS, AXP_WIDGETS_CHART_CATEGORY, AXP_WIDGETS_UTILITY_CATEGORY, RootConfig, dashboardFactory };
5021
6315
  //# sourceMappingURL=acorex-modules-dashboard-management.mjs.map