@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.
- package/application-management/index.d.ts +161 -13
- package/assets/images/weather/cloudy-day-1.svg +175 -0
- package/assets/images/weather/cloudy-day-2.svg +176 -0
- package/assets/images/weather/cloudy-day-3.svg +175 -0
- package/assets/images/weather/cloudy-night-1.svg +198 -0
- package/assets/images/weather/cloudy-night-2.svg +198 -0
- package/assets/images/weather/cloudy-night-3.svg +198 -0
- package/assets/images/weather/cloudy.svg +500 -0
- package/assets/images/weather/day.svg +521 -0
- package/assets/images/weather/night.svg +503 -0
- package/assets/images/weather/rainy-1.svg +157 -0
- package/assets/images/weather/rainy-2.svg +133 -0
- package/assets/images/weather/rainy-3.svg +157 -0
- package/assets/images/weather/rainy-4.svg +66 -0
- package/assets/images/weather/rainy-5.svg +90 -0
- package/assets/images/weather/rainy-6.svg +91 -0
- package/assets/images/weather/rainy-7.svg +91 -0
- package/assets/images/weather/snowy-1.svg +230 -0
- package/assets/images/weather/snowy-2.svg +237 -0
- package/assets/images/weather/snowy-3.svg +268 -0
- package/assets/images/weather/snowy-4.svg +94 -0
- package/assets/images/weather/snowy-5.svg +166 -0
- package/assets/images/weather/snowy-6.svg +225 -0
- package/assets/images/weather/thunder.svg +268 -0
- package/assets/images/weather/weather-sprite.svg +1245 -0
- package/assets/images/weather/weather.svg +1245 -0
- package/assets/images/weather/weather_sagittarius.svg +9 -0
- package/assets/images/weather/weather_sunset.svg +14 -0
- package/auth/index.d.ts +76 -4
- package/common/index.d.ts +183 -8
- package/content-management/index.d.ts +97 -8
- package/conversation/index.d.ts +585 -4
- package/dashboard-management/index.d.ts +1142 -5
- package/document-management/index.d.ts +289 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-BJp8imYd.mjs → acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs} +7 -7
- package/fesm2022/acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +41 -41
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs → acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs} +44 -44
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs +65 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs +18 -0
- package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module--HO8WVi_.mjs → acorex-modules-auth-login.module-eC1_ukrb.mjs} +8 -8
- package/fesm2022/acorex-modules-auth-login.module-eC1_ukrb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-master.layout-CKfLvnZR.mjs → acorex-modules-auth-master.layout-DpfqRgAl.mjs} +5 -5
- package/fesm2022/acorex-modules-auth-master.layout-DpfqRgAl.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs +59 -0
- package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs +134 -0
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-Dphs3LyY.mjs → acorex-modules-auth-routes-EGvejNu9.mjs} +2 -2
- package/fesm2022/acorex-modules-auth-routes-EGvejNu9.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-settings.provider-CM-T8nbI.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs → acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs} +4 -4
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-CKp1SEfD.mjs → acorex-modules-auth-two-factor.module-DF3_fgzH.mjs} +7 -7
- package/fesm2022/acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs +135 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-tUvSQpDP.mjs → acorex-modules-common-search-popup.component-B5JU9uH9.mjs} +4 -4
- package/fesm2022/acorex-modules-common-search-popup.component-B5JU9uH9.mjs.map +1 -0
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs +53 -0
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +526 -36
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +121 -51
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +507 -46
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1389 -95
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs → acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs} +234 -159
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs → acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs} +6 -8
- package/fesm2022/acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs → acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-llMxeeFn.mjs → acorex-modules-document-management-details-view.component-DBdPqZC-.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-details-view.component-DBdPqZC-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs → acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive.component-BQ2w-PZw.mjs → acorex-modules-document-management-drive.component-B-a1lpDK.mjs} +8 -8
- package/fesm2022/acorex-modules-document-management-drive.component-B-a1lpDK.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs → acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs +68 -0
- package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs +51 -0
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs +183 -0
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs +29 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs +38 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs +32 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs → acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs → acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs → acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs} +6 -7
- package/fesm2022/acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs +54 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs → acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs +36 -0
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- 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
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs → acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs → acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs} +5 -7
- package/fesm2022/acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs → acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs → acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs → acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs} +5 -5
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs.map +1 -0
- 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
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs → acorex-modules-form-template-management-template.entity-Cps77n3G.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-template.entity-Cps77n3G.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs → acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs} +5 -5
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs → acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs} +34 -27
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs.map +1 -0
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs +28 -0
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs.map +1 -0
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +10 -10
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +42 -44
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CittqJHu.mjs → acorex-modules-organization-management-add-item.component-COUAmxM8.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-add-item.component-COUAmxM8.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BMojk26d.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-BnWpX4US.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs → acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs} +7 -15
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs.map +1 -0
- 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
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs → acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs} +12 -21
- package/fesm2022/acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CY4TugWR.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill.entity-D9XojzUV.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-mYPhrc2l.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +124 -236
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CzMi7CBH.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs} +221 -110
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-DfbMc2hn.mjs → acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs} +5 -5
- package/fesm2022/acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-settings.provider-B-19OJn0.mjs → acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs} +2 -2
- package/fesm2022/acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +139 -65
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-security-management-permissions-editor.component-Ccx0_9L_.mjs → acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs} +5 -5
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs → acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs} +4 -4
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +1 -0
- 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
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs → acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs} +4 -4
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs → acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs} +5 -6
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs → acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs} +5 -6
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +1 -0
- package/fesm2022/acorex-modules-security-management.mjs +48 -48
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs → acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs} +4 -4
- package/fesm2022/acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs → acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs} +4 -4
- package/fesm2022/acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management-settings.provider-fX0dhWUL.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +43 -43
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs → acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs} +8 -8
- package/fesm2022/acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +12 -12
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/fesm2022/acorex-modules.mjs.map +1 -1
- package/form-template-management/index.d.ts +144 -5
- package/index.d.ts +2 -2
- package/issue-management/index.d.ts +130 -6
- package/log-management/index.d.ts +94 -7
- package/notification-management/index.d.ts +266 -10
- package/organization-management/index.d.ts +544 -4
- package/package.json +1 -1
- package/platform-management/index.d.ts +350 -4
- package/project-management/index.d.ts +336 -7
- package/scheduler-job-management/index.d.ts +65 -5
- package/security-management/index.d.ts +167 -4
- package/settings-management/index.d.ts +59 -2
- package/text-template-management/index.d.ts +116 -5
- package/training-management/index.d.ts +330 -7
- package/workflow-management/index.d.ts +28 -2
- package/application-management/lib/application-management-mock-data.d.ts +0 -67
- package/application-management/lib/application-management.module.d.ts +0 -14
- package/application-management/lib/application-management.route.d.ts +0 -2
- package/application-management/lib/application-management.service.d.ts +0 -34
- package/application-management/lib/application-management.source.d.ts +0 -8
- package/application-management/lib/application-management.types.d.ts +0 -50
- package/application-management/lib/const.d.ts +0 -5
- package/application-management/lib/entities/application-module.entity.d.ts +0 -3
- package/application-management/lib/entities/applications.entity.d.ts +0 -3
- package/application-management/lib/entities/edition.entity.d.ts +0 -3
- package/application-management/lib/entities/entity.entity.d.ts +0 -3
- package/application-management/lib/entities/feature.entity.d.ts +0 -3
- package/application-management/lib/entities/modules.entity.d.ts +0 -3
- package/application-management/lib/entities/permission.entity.d.ts +0 -3
- package/application-management/lib/entities/property.entity.d.ts +0 -3
- package/application-management/lib/entity.loader.d.ts +0 -9
- package/application-management/lib/layouts/index.d.ts +0 -1
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +0 -74
- package/application-management/lib/menu.provider.d.ts +0 -4
- package/application-management/lib/module-designer/module-designer.component.d.ts +0 -34
- package/application-management/lib/module-designer/module-designer.service.d.ts +0 -34
- package/application-management/lib/module-designer/module-designer.type.d.ts +0 -1
- package/application-management/lib/services/application-management.service.d.ts +0 -10
- package/application-management/lib/services/application-module-management.service.d.ts +0 -10
- package/application-management/lib/services/context-menu.service.d.ts +0 -26
- package/application-management/lib/services/edition-management.service.d.ts +0 -10
- package/application-management/lib/services/entity-management.service.d.ts +0 -10
- package/application-management/lib/services/feature-management.service.d.ts +0 -10
- package/application-management/lib/services/module-management.service.d.ts +0 -10
- package/application-management/lib/services/permission-management.service.d.ts +0 -10
- package/application-management/lib/services/property-management.service.d.ts +0 -10
- package/application-management/lib/workflows/create-module-entity.workflow.d.ts +0 -9
- package/application-management/lib/workflows/index.d.ts +0 -2
- package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +0 -2
- package/auth/lib/auth.config.d.ts +0 -29
- package/auth/lib/auth.module.d.ts +0 -10
- package/auth/lib/auth.routes.d.ts +0 -2
- package/auth/lib/error-handler.d.ts +0 -9
- package/auth/lib/menu.provider.d.ts +0 -5
- package/auth/lib/pages/account/account.module.d.ts +0 -8
- package/auth/lib/pages/account/app-chooser/app-chooser-list.component.d.ts +0 -12
- package/auth/lib/pages/account/app-chooser/app-chooser-slot.component.d.ts +0 -12
- package/auth/lib/pages/account/app-chooser/app-chooser.component.d.ts +0 -13
- package/auth/lib/pages/account/profile/profile-slot.component.d.ts +0 -23
- package/auth/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +0 -10
- package/auth/lib/pages/account/tenant-chooser/tenant-chooser.component.d.ts +0 -24
- package/auth/lib/pages/account/user-profile-card/user-profile-card.component.d.ts +0 -26
- package/auth/lib/pages/account/user-sessions/user-sessions.component.d.ts +0 -71
- package/auth/lib/pages/account/user-sessions/user-sessions.service.d.ts +0 -22
- package/auth/lib/pages/forgot/password/password.component.d.ts +0 -11
- package/auth/lib/pages/forgot/routes.d.ts +0 -3
- package/auth/lib/pages/login/login.module.d.ts +0 -7
- package/auth/lib/pages/login/password/password.component.d.ts +0 -26
- package/auth/lib/pages/two-factor/two-factor-code/two-factor-code.component.d.ts +0 -8
- package/auth/lib/pages/two-factor/two-factor.module.d.ts +0 -7
- package/auth/lib/settings.provider.d.ts +0 -8
- package/auth/lib/shared/layouts/blank/blank.layout.d.ts +0 -8
- package/auth/lib/shared/layouts/master/master.layout.d.ts +0 -7
- package/auth/lib/shared/services/idle.service.d.ts +0 -17
- package/auth/lib/shared/services/index.d.ts +0 -1
- package/common/lib/common.module.d.ts +0 -8
- package/common/lib/const.d.ts +0 -12
- package/common/lib/entity.provider.d.ts +0 -10
- package/common/lib/features/global-search/index.d.ts +0 -3
- package/common/lib/features/global-search/search-popup.component.d.ts +0 -22
- package/common/lib/features/global-search/search-slot.component.d.ts +0 -9
- package/common/lib/features/global-search/search.config.d.ts +0 -5
- package/common/lib/features/global-search/search.module.d.ts +0 -11
- package/common/lib/features/global-search/search.viewmodel.d.ts +0 -34
- package/common/lib/features/global-search/workflows/search.workflow.d.ts +0 -11
- package/common/lib/menu.provider.d.ts +0 -6
- package/common/lib/permission-definition.provider.d.ts +0 -4
- package/common/lib/search-command.provider.d.ts +0 -4
- package/common/lib/settings.provider.d.ts +0 -4
- package/common/lib/widgets-names-list.d.ts +0 -40
- package/content-management/lib/const.d.ts +0 -19
- package/content-management/lib/content-management.module.d.ts +0 -7
- package/content-management/lib/entities/index.d.ts +0 -1
- package/content-management/lib/entities/promotion/index.d.ts +0 -5
- package/content-management/lib/entities/promotion/promotion.datasource.d.ts +0 -7
- package/content-management/lib/entities/promotion/promotion.entity.d.ts +0 -3
- package/content-management/lib/entities/promotion/promotion.service.d.ts +0 -10
- package/content-management/lib/entities/promotion/promotion.types.d.ts +0 -16
- package/content-management/lib/entity.provider.d.ts +0 -10
- package/content-management/lib/features/index.d.ts +0 -1
- package/content-management/lib/features/promotion/components/index.d.ts +0 -1
- package/content-management/lib/features/promotion/components/promotion-slot/promotion-slot.component.d.ts +0 -13
- package/content-management/lib/features/promotion/index.d.ts +0 -1
- package/content-management/lib/menu.provider.d.ts +0 -5
- package/content-management/lib/permission-definition.provider.d.ts +0 -4
- package/content-management/lib/search-command.provider.d.ts +0 -4
- package/content-management/lib/setting.provider.d.ts +0 -4
- package/conversation/lib/const.d.ts +0 -26
- package/conversation/lib/conversation.module.d.ts +0 -37
- package/conversation/lib/entities/index.d.ts +0 -2
- package/conversation/lib/entities/message/index.d.ts +0 -3
- package/conversation/lib/entities/message/message.entity.d.ts +0 -3
- package/conversation/lib/entities/message/message.service.d.ts +0 -10
- package/conversation/lib/entities/message/message.types.d.ts +0 -20
- package/conversation/lib/entities/room/index.d.ts +0 -3
- package/conversation/lib/entities/room/room.entity.d.ts +0 -3
- package/conversation/lib/entities/room/room.service.d.ts +0 -10
- package/conversation/lib/entities/room/room.types.d.ts +0 -8
- package/conversation/lib/entity.provider.d.ts +0 -12
- package/conversation/lib/features/chat/chat-preview.helper.d.ts +0 -68
- package/conversation/lib/features/chat/chat.component.d.ts +0 -42
- package/conversation/lib/features/chat/chat.service.d.ts +0 -101
- package/conversation/lib/features/chat/chat.type.d.ts +0 -38
- package/conversation/lib/features/chat/components/chat-item/chat-item.component.d.ts +0 -21
- package/conversation/lib/features/chat/components/chat-preview/chat-preview.component.d.ts +0 -34
- package/conversation/lib/features/chat/index.d.ts +0 -5
- package/conversation/lib/features/comment/comment-list-view.component.d.ts +0 -67
- package/conversation/lib/features/comment/comment-lookup-popup.component.d.ts +0 -10
- package/conversation/lib/features/comment/comment.service.d.ts +0 -66
- package/conversation/lib/features/comment/comment.type.d.ts +0 -45
- package/conversation/lib/features/comment/index.d.ts +0 -4
- package/conversation/lib/features/index.d.ts +0 -2
- package/dashboard-management/lib/const.d.ts +0 -19
- package/dashboard-management/lib/dashboard-management.module.d.ts +0 -7
- package/dashboard-management/lib/entities/dashboard/dashboard.entity.d.ts +0 -3
- package/dashboard-management/lib/entities/dashboard/dashboard.service.d.ts +0 -10
- package/dashboard-management/lib/entities/dashboard/dashboard.types.d.ts +0 -12
- package/dashboard-management/lib/entities/dashboard/index.d.ts +0 -3
- package/dashboard-management/lib/entities/index.d.ts +0 -1
- package/dashboard-management/lib/entity.provider.d.ts +0 -10
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.d.ts +0 -142
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.store.d.ts +0 -39
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.type.d.ts +0 -20
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/index.d.ts +0 -3
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.d.ts +0 -21
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +0 -14
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.d.ts +0 -11
- package/dashboard-management/lib/features/home-dashboard/index.d.ts +0 -1
- package/dashboard-management/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.d.ts +0 -20
- package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/bar-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/chart.type.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.d.ts +0 -39
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar.types.d.ts +0 -50
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.d.ts +0 -24
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/donut-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.d.ts +0 -17
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/index.d.ts +0 -9
- package/dashboard-management/lib/features/shared/widgets/line-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/sticky-note/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.d.ts +0 -21
- package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/tasklist/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.component.d.ts +0 -34
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist.type.d.ts +0 -36
- package/dashboard-management/lib/features/shared/widgets/weather/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.d.ts +0 -174
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.key.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.d.ts +0 -47
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.service.d.ts +0 -48
- package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.component.d.ts +0 -114
- package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.config.d.ts +0 -14
- package/dashboard-management/lib/menu.provider.d.ts +0 -6
- package/dashboard-management/lib/settings.keys.d.ts +0 -3
- package/document-management/lib/badge.provider.d.ts +0 -11
- package/document-management/lib/const.d.ts +0 -49
- package/document-management/lib/document-management.module.d.ts +0 -16
- package/document-management/lib/entities/document/document.entity.d.ts +0 -3
- package/document-management/lib/entities/document/document.module.d.ts +0 -6
- package/document-management/lib/entities/document/document.service.d.ts +0 -15
- package/document-management/lib/entities/document/document.types.d.ts +0 -14
- package/document-management/lib/entities/document/index.d.ts +0 -4
- package/document-management/lib/entities/document-type/document-type.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type/document-type.module.d.ts +0 -6
- package/document-management/lib/entities/document-type/document-type.service.d.ts +0 -10
- package/document-management/lib/entities/document-type/document-type.types.d.ts +0 -21
- package/document-management/lib/entities/document-type/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-meta-definition/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-meta-value/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-status-definition/index.d.ts +0 -4
- package/document-management/lib/entities/folder/folder.entity.d.ts +0 -3
- package/document-management/lib/entities/folder/folder.service.d.ts +0 -14
- package/document-management/lib/entities/folder/folder.types.d.ts +0 -42
- package/document-management/lib/entities/folder/index.d.ts +0 -3
- package/document-management/lib/entities/index.d.ts +0 -6
- package/document-management/lib/entity.provider.d.ts +0 -10
- package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +0 -27
- package/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +0 -14
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +0 -223
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +0 -142
- package/document-management/lib/features/document-explorer/index.d.ts +0 -3
- package/document-management/lib/features/document-explorer/settings.keys.d.ts +0 -5
- package/document-management/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.d.ts +0 -145
- package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +0 -143
- package/document-management/lib/features/drive/drive.component.d.ts +0 -259
- package/document-management/lib/features/drive/index.d.ts +0 -3
- package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +0 -295
- package/document-management/lib/features/drive-choose/drive-choose.module.d.ts +0 -7
- package/document-management/lib/features/drive-choose/slots/file-uploader-widget-extension/file-uploader-widget-extension.component.d.ts +0 -15
- package/document-management/lib/features/file-type/file-type.module.d.ts +0 -6
- package/document-management/lib/features/file-type/index.d.ts +0 -2
- package/document-management/lib/features/file-type/providers/archive.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/audio.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/code.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/document.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/image.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/index.d.ts +0 -6
- package/document-management/lib/features/file-type/providers/video.file.d.ts +0 -4
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-column.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-designer.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-edit.component.d.ts +0 -19
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-view.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-widget.config.d.ts +0 -7
- package/document-management/lib/features/file-type/widgets/file-type-extension/index.d.ts +0 -5
- package/document-management/lib/features/file-type/widgets/index.d.ts +0 -1
- package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +0 -16
- package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +0 -13
- package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +0 -204
- package/document-management/lib/features/shared/components/index.d.ts +0 -3
- package/document-management/lib/features/shared/components/link-dialog/link-dialog.component.d.ts +0 -24
- package/document-management/lib/features/shared/components/lock-dialog/lock-dialog.component.d.ts +0 -16
- package/document-management/lib/features/shared/components/share-dialog/share-dialog.component.d.ts +0 -22
- package/document-management/lib/features/shared/components/share-email-dialog/share-email-dialog.component.d.ts +0 -17
- package/document-management/lib/features/shared/components/unlock-dialog/unlock-dialog.component.d.ts +0 -10
- package/document-management/lib/features/shared/document-manager.service.d.ts +0 -378
- package/document-management/lib/features/shared/document-manager.types.d.ts +0 -30
- package/document-management/lib/features/shared/index.d.ts +0 -3
- package/document-management/lib/features/workflow/upload/upload.workflow.d.ts +0 -17
- package/document-management/lib/menu.provider.d.ts +0 -6
- package/document-management/lib/permission-definition.provider.d.ts +0 -8
- package/document-management/lib/permission.keys.d.ts +0 -19
- package/document-management/lib/search-command.provider.d.ts +0 -4
- package/document-management/lib/settings.provider.d.ts +0 -4
- package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs +0 -65
- package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs +0 -18
- package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-login.module--HO8WVi_.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-CKfLvnZR.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs +0 -59
- package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs +0 -134
- package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-routes-Dphs3LyY.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs +0 -40
- package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor.module-CKp1SEfD.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs +0 -135
- package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-search-popup.component-tUvSQpDP.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-details-view.component-llMxeeFn.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-BQ2w-PZw.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs +0 -70
- package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs +0 -52
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs +0 -55
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs +0 -37
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-KTKkPz-B.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-BLobMX4C.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs +0 -28
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-CittqJHu.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-CtA19B8x.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CzMi7CBH.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-list-version.component-DfbMc2hn.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-settings.provider-B-19OJn0.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-Ccx0_9L_.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-CoqOAn_m.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs.map +0 -1
- package/form-template-management/lib/const.d.ts +0 -23
- package/form-template-management/lib/entities/category/category.entity.d.ts +0 -3
- package/form-template-management/lib/entities/category/category.module.d.ts +0 -6
- package/form-template-management/lib/entities/category/category.service.d.ts +0 -10
- package/form-template-management/lib/entities/category/category.types.d.ts +0 -6
- package/form-template-management/lib/entities/category/index.d.ts +0 -3
- package/form-template-management/lib/entities/template/index.d.ts +0 -3
- package/form-template-management/lib/entities/template/template.entity.d.ts +0 -3
- package/form-template-management/lib/entities/template/template.module.d.ts +0 -6
- package/form-template-management/lib/entities/template/template.service.d.ts +0 -10
- package/form-template-management/lib/entities/template/template.types.d.ts +0 -52
- package/form-template-management/lib/entity.provider.d.ts +0 -10
- package/form-template-management/lib/features/designer/designer-connector.service.d.ts +0 -12
- package/form-template-management/lib/features/designer/designer.page.d.ts +0 -9
- package/form-template-management/lib/features/designer/index.d.ts +0 -5
- package/form-template-management/lib/features/designer/template.provider.d.ts +0 -7
- package/form-template-management/lib/features/designer/widgets/template/index.d.ts +0 -4
- package/form-template-management/lib/features/designer/widgets/template/template-widget-designer.component.d.ts +0 -25
- package/form-template-management/lib/features/designer/widgets/template/template-widget-edit.component.d.ts +0 -11
- package/form-template-management/lib/features/designer/widgets/template/template-widget-view.component.d.ts +0 -11
- package/form-template-management/lib/features/designer/widgets/template/template-widget.config.d.ts +0 -5
- package/form-template-management/lib/features/designer/widgets/template-designer/index.d.ts +0 -2
- package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget-view.component.d.ts +0 -9
- package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget.config.d.ts +0 -7
- package/form-template-management/lib/features/designer/widgets/template-picker/template-picker.component.d.ts +0 -40
- package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +0 -31
- package/form-template-management/lib/features/designer/workflows/create-template.workflow.d.ts +0 -2
- package/form-template-management/lib/features/designer/workflows/design-template.workflow.d.ts +0 -2
- package/form-template-management/lib/features/designer/workflows/workflow.actions.d.ts +0 -17
- package/form-template-management/lib/features/index.d.ts +0 -1
- package/form-template-management/lib/features/viewer/viewer-connector.service.d.ts +0 -13
- package/form-template-management/lib/features/viewer/viewer-popup.component.d.ts +0 -25
- package/form-template-management/lib/features/viewer/workflows/open-template.workflow.d.ts +0 -9
- package/form-template-management/lib/form-template-management.module.d.ts +0 -11
- package/form-template-management/lib/menu.provider.d.ts +0 -6
- package/form-template-management/lib/permission-definition.provider.d.ts +0 -8
- package/form-template-management/lib/permission.keys.d.ts +0 -19
- package/form-template-management/lib/search-command.provider.d.ts +0 -4
- package/form-template-management/lib/settings.keys.d.ts +0 -6
- package/form-template-management/lib/settings.provider.d.ts +0 -8
- package/issue-management/lib/components/capture-screen/capture-screen.types.d.ts +0 -19
- package/issue-management/lib/components/capture-screen/components/capture-screen-component/capture-screen.component.d.ts +0 -37
- package/issue-management/lib/components/capture-screen/index.d.ts +0 -2
- package/issue-management/lib/components/capture-screen/services/capture-screen.service.d.ts +0 -33
- package/issue-management/lib/const.d.ts +0 -37
- package/issue-management/lib/entities/index.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/index.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/issue-type.entity.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/issue-type.service.d.ts +0 -10
- package/issue-management/lib/entities/issue-type/issue-type.types.d.ts +0 -6
- package/issue-management/lib/entities/my-reported-issues/index.d.ts +0 -3
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.entity.d.ts +0 -3
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.service.d.ts +0 -10
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.types.d.ts +0 -5
- package/issue-management/lib/entities/reported-issues/index.d.ts +0 -3
- package/issue-management/lib/entities/reported-issues/reported-issues.entity.d.ts +0 -3
- package/issue-management/lib/entities/reported-issues/reported-issues.service.d.ts +0 -10
- package/issue-management/lib/entities/reported-issues/reported-issues.types.d.ts +0 -20
- package/issue-management/lib/entity.provider.d.ts +0 -10
- package/issue-management/lib/features/report-issue/components/index.d.ts +0 -1
- package/issue-management/lib/features/report-issue/components/report-new-issue/report-new-issue.component.d.ts +0 -51
- package/issue-management/lib/features/report-issue/index.d.ts +0 -2
- package/issue-management/lib/features/report-issue/report-issue.types.d.ts +0 -24
- package/issue-management/lib/features/report-issue/services/report-new-issue.viewmodel.d.ts +0 -17
- package/issue-management/lib/features/report-issue/workflows/index.d.ts +0 -1
- package/issue-management/lib/features/report-issue/workflows/show-report-issue.workflow.d.ts +0 -10
- package/issue-management/lib/issue-management.module.d.ts +0 -7
- package/issue-management/lib/menu.provider.d.ts +0 -5
- package/issue-management/lib/setting.provider.d.ts +0 -4
- package/log-management/lib/const.d.ts +0 -20
- package/log-management/lib/entities/axp-log/axp-log.entity.d.ts +0 -3
- package/log-management/lib/entities/axp-log/axp-log.service.d.ts +0 -10
- package/log-management/lib/entities/axp-log/axp-log.types.d.ts +0 -23
- package/log-management/lib/entities/axp-log/index.d.ts +0 -3
- package/log-management/lib/entity.provider.d.ts +0 -10
- package/log-management/lib/log-management.module.d.ts +0 -6
- package/log-management/lib/menu.provider.d.ts +0 -5
- package/log-management/lib/permission-definition.provider.d.ts +0 -4
- package/log-management/lib/search-command.provider.d.ts +0 -4
- package/log-management/lib/settings.keys.d.ts +0 -16
- package/log-management/lib/settings.provider.d.ts +0 -12
- package/notification-management/lib/const.d.ts +0 -28
- package/notification-management/lib/entities/channel/channel.entity.d.ts +0 -3
- package/notification-management/lib/entities/channel/channel.service.d.ts +0 -10
- package/notification-management/lib/entities/channel/channel.types.d.ts +0 -21
- package/notification-management/lib/entities/channel/index.d.ts +0 -3
- package/notification-management/lib/entities/index.d.ts +0 -3
- package/notification-management/lib/entities/my-notification.d.ts +0 -3
- package/notification-management/lib/entities/notification/index.d.ts +0 -3
- package/notification-management/lib/entities/notification/notification.entity.d.ts +0 -3
- package/notification-management/lib/entities/notification/notification.service.d.ts +0 -17
- package/notification-management/lib/entities/notification/notification.types.d.ts +0 -5
- package/notification-management/lib/entities/notification-log.entity.d.ts +0 -3
- package/notification-management/lib/entities/template/index.d.ts +0 -4
- package/notification-management/lib/entities/template/template.entity.d.ts +0 -3
- package/notification-management/lib/entities/template/template.module.d.ts +0 -6
- package/notification-management/lib/entities/template/template.service.d.ts +0 -10
- package/notification-management/lib/entities/template/template.types.d.ts +0 -7
- package/notification-management/lib/entity.provider.d.ts +0 -10
- package/notification-management/lib/features/components/admin-notification-item/admin-notification-item.component.d.ts +0 -10
- package/notification-management/lib/features/components/admin-notification-panel/admin-notification-panel.component.d.ts +0 -41
- package/notification-management/lib/features/components/admin-notification-slot/admin-notification-slot.component.d.ts +0 -7
- package/notification-management/lib/features/dashboard/widgets/my-notification/index.d.ts +0 -2
- package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.component.d.ts +0 -82
- package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.config.d.ts +0 -5
- package/notification-management/lib/features/shared/notification-connector.service.d.ts +0 -57
- package/notification-management/lib/menu.provider.d.ts +0 -6
- package/notification-management/lib/notification-management.module.d.ts +0 -8
- package/notification-management/lib/notification-management.type.d.ts +0 -45
- package/notification-management/lib/settings.keys.d.ts +0 -17
- package/notification-management/lib/settings.provider.d.ts +0 -8
- package/organization-management/lib/const.d.ts +0 -125
- package/organization-management/lib/entities/branch/branch.entity.d.ts +0 -3
- package/organization-management/lib/entities/branch/branch.module.d.ts +0 -6
- package/organization-management/lib/entities/branch/branch.service.d.ts +0 -10
- package/organization-management/lib/entities/branch/branch.types.d.ts +0 -11
- package/organization-management/lib/entities/branch/index.d.ts +0 -3
- package/organization-management/lib/entities/chart/chart.entity.d.ts +0 -3
- package/organization-management/lib/entities/chart/chart.module.d.ts +0 -6
- package/organization-management/lib/entities/chart/chart.service.d.ts +0 -10
- package/organization-management/lib/entities/chart/chart.types.d.ts +0 -21
- package/organization-management/lib/entities/chart/index.d.ts +0 -3
- package/organization-management/lib/entities/company/company.entity.d.ts +0 -3
- package/organization-management/lib/entities/company/company.module.d.ts +0 -6
- package/organization-management/lib/entities/company/company.service.d.ts +0 -10
- package/organization-management/lib/entities/company/company.types.d.ts +0 -4
- package/organization-management/lib/entities/company/index.d.ts +0 -3
- package/organization-management/lib/entities/department/department.entity.d.ts +0 -3
- package/organization-management/lib/entities/department/department.module.d.ts +0 -6
- package/organization-management/lib/entities/department/department.service.d.ts +0 -10
- package/organization-management/lib/entities/department/department.types.d.ts +0 -10
- package/organization-management/lib/entities/department/index.d.ts +0 -3
- package/organization-management/lib/entities/division/division.entity.d.ts +0 -3
- package/organization-management/lib/entities/division/division.module.d.ts +0 -6
- package/organization-management/lib/entities/division/division.service.d.ts +0 -10
- package/organization-management/lib/entities/division/division.types.d.ts +0 -10
- package/organization-management/lib/entities/division/index.d.ts +0 -3
- package/organization-management/lib/entities/employee/employee.entity.d.ts +0 -3
- package/organization-management/lib/entities/employee/employee.module.d.ts +0 -6
- package/organization-management/lib/entities/employee/employee.service.d.ts +0 -10
- package/organization-management/lib/entities/employee/employee.types.d.ts +0 -15
- package/organization-management/lib/entities/employee/index.d.ts +0 -3
- package/organization-management/lib/entities/employment-type/employment-type.entity.d.ts +0 -3
- package/organization-management/lib/entities/employment-type/employment-type.module.d.ts +0 -6
- package/organization-management/lib/entities/employment-type/employment-type.service.d.ts +0 -10
- package/organization-management/lib/entities/employment-type/employment-type.types.d.ts +0 -5
- package/organization-management/lib/entities/employment-type/index.d.ts +0 -3
- package/organization-management/lib/entities/index.d.ts +0 -16
- package/organization-management/lib/entities/position/index.d.ts +0 -3
- package/organization-management/lib/entities/position/position.entity.d.ts +0 -3
- package/organization-management/lib/entities/position/position.module.d.ts +0 -6
- package/organization-management/lib/entities/position/position.service.d.ts +0 -10
- package/organization-management/lib/entities/position/position.types.d.ts +0 -10
- package/organization-management/lib/entities/position-category/index.d.ts +0 -3
- package/organization-management/lib/entities/position-category/position-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/position-category/position-category.module.d.ts +0 -6
- package/organization-management/lib/entities/position-category/position-category.service.d.ts +0 -10
- package/organization-management/lib/entities/position-category/position-category.types.d.ts +0 -7
- package/organization-management/lib/entities/responsibility/index.d.ts +0 -3
- package/organization-management/lib/entities/responsibility/responsibility.entity.d.ts +0 -3
- package/organization-management/lib/entities/responsibility/responsibility.module.d.ts +0 -7
- package/organization-management/lib/entities/responsibility/responsibility.service.d.ts +0 -10
- package/organization-management/lib/entities/responsibility/responsibility.types.d.ts +0 -6
- package/organization-management/lib/entities/responsibility-category/index.d.ts +0 -3
- package/organization-management/lib/entities/responsibility-category/responsibility-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/responsibility-category/responsibility-category.module.d.ts +0 -7
- package/organization-management/lib/entities/responsibility-category/responsibility-category.service.d.ts +0 -10
- package/organization-management/lib/entities/responsibility-category/responsibility-category.types.d.ts +0 -7
- package/organization-management/lib/entities/role/index.d.ts +0 -3
- package/organization-management/lib/entities/role/role.entity.d.ts +0 -3
- package/organization-management/lib/entities/role/role.module.d.ts +0 -6
- package/organization-management/lib/entities/role/role.service.d.ts +0 -10
- package/organization-management/lib/entities/role/role.types.d.ts +0 -8
- package/organization-management/lib/entities/role-category/index.d.ts +0 -3
- package/organization-management/lib/entities/role-category/role-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/role-category/role-category.module.d.ts +0 -6
- package/organization-management/lib/entities/role-category/role-category.service.d.ts +0 -10
- package/organization-management/lib/entities/role-category/role-category.types.d.ts +0 -7
- package/organization-management/lib/entities/skill/index.d.ts +0 -3
- package/organization-management/lib/entities/skill/skill.entity.d.ts +0 -3
- package/organization-management/lib/entities/skill/skill.module.d.ts +0 -6
- package/organization-management/lib/entities/skill/skill.service.d.ts +0 -10
- package/organization-management/lib/entities/skill/skill.types.d.ts +0 -6
- package/organization-management/lib/entities/skill-category/index.d.ts +0 -3
- package/organization-management/lib/entities/skill-category/skill-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/skill-category/skill-category.module.d.ts +0 -6
- package/organization-management/lib/entities/skill-category/skill-category.service.d.ts +0 -10
- package/organization-management/lib/entities/skill-category/skill-category.types.d.ts +0 -7
- package/organization-management/lib/entities/team/index.d.ts +0 -3
- package/organization-management/lib/entities/team/team.entity.d.ts +0 -3
- package/organization-management/lib/entities/team/team.module.d.ts +0 -6
- package/organization-management/lib/entities/team/team.service.d.ts +0 -10
- package/organization-management/lib/entities/team/team.types.d.ts +0 -8
- package/organization-management/lib/entity.provider.d.ts +0 -10
- package/organization-management/lib/features/employee/employee-feature.module.d.ts +0 -9
- package/organization-management/lib/features/index.d.ts +0 -1
- package/organization-management/lib/features/organization-chart/add-item/add-item.component.d.ts +0 -23
- package/organization-management/lib/features/organization-chart/index.d.ts +0 -1
- package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +0 -145
- package/organization-management/lib/features/organization-chart/org-chart-configuration.service.d.ts +0 -21
- package/organization-management/lib/features/organization-chart/org-chart-print.service.d.ts +0 -45
- package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +0 -239
- package/organization-management/lib/features/organization-chart/org-chart.service.d.ts +0 -66
- package/organization-management/lib/features/organization-chart/org-chart.type.d.ts +0 -46
- package/organization-management/lib/menu.provider.d.ts +0 -6
- package/organization-management/lib/organization-management.module.d.ts +0 -24
- package/organization-management/lib/settings.keys.d.ts +0 -17
- package/organization-management/lib/settings.provider.d.ts +0 -9
- package/platform-management/lib/const.d.ts +0 -61
- package/platform-management/lib/entities/app-term/app-term.entity.d.ts +0 -3
- package/platform-management/lib/entities/app-term/app-term.service.d.ts +0 -10
- package/platform-management/lib/entities/app-term/app-term.types.d.ts +0 -19
- package/platform-management/lib/entities/app-term/index.d.ts +0 -5
- package/platform-management/lib/entities/app-version/app-version.entity.d.ts +0 -3
- package/platform-management/lib/entities/app-version/app-version.service.d.ts +0 -10
- package/platform-management/lib/entities/app-version/app-version.types.d.ts +0 -13
- package/platform-management/lib/entities/app-version/index.d.ts +0 -5
- package/platform-management/lib/entities/data-source/coulmn-def.widget.d.ts +0 -68
- package/platform-management/lib/entities/data-source/data-source.entity.d.ts +0 -3
- package/platform-management/lib/entities/data-source/data-source.service.d.ts +0 -10
- package/platform-management/lib/entities/data-source/data-source.types.d.ts +0 -7
- package/platform-management/lib/entities/data-source/datasource-provider.dynamic.d.ts +0 -10
- package/platform-management/lib/entities/data-source/index.d.ts +0 -3
- package/platform-management/lib/entities/global-variable/global-variable.entity.d.ts +0 -3
- package/platform-management/lib/entities/global-variable/global-variables.service.d.ts +0 -10
- package/platform-management/lib/entities/global-variable/global-variables.types.d.ts +0 -7
- package/platform-management/lib/entities/global-variable/index.d.ts +0 -3
- package/platform-management/lib/entities/glossary/glossary.entity.d.ts +0 -3
- package/platform-management/lib/entities/glossary/glossary.service.d.ts +0 -10
- package/platform-management/lib/entities/glossary/glossary.types.d.ts +0 -4
- package/platform-management/lib/entities/glossary/index.d.ts +0 -3
- package/platform-management/lib/entities/index.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition/index.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.entity.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.service.d.ts +0 -10
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.types.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition-category/category.entity.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition-category/category.service.d.ts +0 -10
- package/platform-management/lib/entities/meta-data-definition-category/category.types.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition-category/index.d.ts +0 -3
- package/platform-management/lib/entity.provider.d.ts +0 -10
- package/platform-management/lib/features/app-terms/check-terms.service.d.ts +0 -11
- package/platform-management/lib/features/app-terms/components/notify-app/notify-app.component.d.ts +0 -14
- package/platform-management/lib/features/app-terms/pages/index.d.ts +0 -1
- package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +0 -17
- package/platform-management/lib/features/app-terms/settings.keys.d.ts +0 -3
- package/platform-management/lib/features/app-terms/workflows/index.d.ts +0 -1
- package/platform-management/lib/features/app-terms/workflows/notify-new-term.workflow.d.ts +0 -15
- package/platform-management/lib/features/app-version/check-version.service.d.ts +0 -10
- package/platform-management/lib/features/app-version/components/index.d.ts +0 -2
- package/platform-management/lib/features/app-version/components/list-versions/list-version.component.d.ts +0 -14
- package/platform-management/lib/features/app-version/components/notify-app/notify-app.component.d.ts +0 -14
- package/platform-management/lib/features/app-version/components/slots/app-version-slot.component.d.ts +0 -12
- package/platform-management/lib/features/app-version/workflows/change-log.workflow.d.ts +0 -23
- package/platform-management/lib/features/app-version/workflows/index.d.ts +0 -1
- package/platform-management/lib/features/app-version/workflows/show-release-notes.workflow.d.ts +0 -9
- package/platform-management/lib/features/common/common.module.d.ts +0 -10
- package/platform-management/lib/features/common/index.d.ts +0 -2
- package/platform-management/lib/features/common/regional/data-source.provider.d.ts +0 -10
- package/platform-management/lib/features/common/regional/index.d.ts +0 -1
- package/platform-management/lib/features/common/regional/language-slot/language-slot.component.d.ts +0 -20
- package/platform-management/lib/features/common/regional/regional-store.service.d.ts +0 -11
- package/platform-management/lib/features/common/regional/settings.keys.d.ts +0 -20
- package/platform-management/lib/features/common/regional/settings.provider.d.ts +0 -10
- package/platform-management/lib/features/release-notes/settings.keys.d.ts +0 -3
- package/platform-management/lib/features/release-notes/settings.provider.d.ts +0 -11
- package/platform-management/lib/features/updater/index.d.ts +0 -2
- package/platform-management/lib/features/updater/updater.module.d.ts +0 -9
- package/platform-management/lib/features/updater/updater.service.d.ts +0 -6
- package/platform-management/lib/menu.provider.d.ts +0 -6
- package/platform-management/lib/platform-management.module.d.ts +0 -16
- package/platform-management/lib/task-board.provider.d.ts +0 -14
- package/project-management/lib/const.d.ts +0 -85
- package/project-management/lib/entities/client/client.entity.d.ts +0 -3
- package/project-management/lib/entities/client/client.service.d.ts +0 -10
- package/project-management/lib/entities/client/client.types.d.ts +0 -7
- package/project-management/lib/entities/client/index.d.ts +0 -3
- package/project-management/lib/entities/index.d.ts +0 -12
- package/project-management/lib/entities/project/index.d.ts +0 -3
- package/project-management/lib/entities/project/project.entity.d.ts +0 -3
- package/project-management/lib/entities/project/project.service.d.ts +0 -10
- package/project-management/lib/entities/project/project.types.d.ts +0 -11
- package/project-management/lib/entities/project-memeber/index.d.ts +0 -3
- package/project-management/lib/entities/project-memeber/project-memeber.entity.d.ts +0 -3
- package/project-management/lib/entities/project-memeber/project-memeber.service.d.ts +0 -10
- package/project-management/lib/entities/project-memeber/project-memeber.types.d.ts +0 -7
- package/project-management/lib/entities/project-role-member/index.d.ts +0 -3
- package/project-management/lib/entities/project-role-member/project-role-member.entity.d.ts +0 -3
- package/project-management/lib/entities/project-role-member/project-role-member.service.d.ts +0 -10
- package/project-management/lib/entities/project-role-member/project-role-member.types.d.ts +0 -5
- package/project-management/lib/entities/project-type/index.d.ts +0 -3
- package/project-management/lib/entities/project-type/project-type.entity.d.ts +0 -3
- package/project-management/lib/entities/project-type/project-type.service.d.ts +0 -10
- package/project-management/lib/entities/project-type/project-type.types.d.ts +0 -4
- package/project-management/lib/entities/sprint/index.d.ts +0 -3
- package/project-management/lib/entities/sprint/sprint.entity.d.ts +0 -3
- package/project-management/lib/entities/sprint/sprint.service.d.ts +0 -10
- package/project-management/lib/entities/sprint/sprint.types.d.ts +0 -8
- package/project-management/lib/entities/sprint-task/index.d.ts +0 -3
- package/project-management/lib/entities/sprint-task/sprint-task.entity.d.ts +0 -3
- package/project-management/lib/entities/sprint-task/sprint-task.service.d.ts +0 -10
- package/project-management/lib/entities/sprint-task/sprint-task.types.d.ts +0 -5
- package/project-management/lib/entities/task/index.d.ts +0 -3
- package/project-management/lib/entities/task/task.entity.d.ts +0 -3
- package/project-management/lib/entities/task/task.service.d.ts +0 -10
- package/project-management/lib/entities/task/task.types.d.ts +0 -19
- package/project-management/lib/entities/task-history/index.d.ts +0 -3
- package/project-management/lib/entities/task-history/task-history.entity.d.ts +0 -3
- package/project-management/lib/entities/task-history/task-history.service.d.ts +0 -10
- package/project-management/lib/entities/task-history/task-history.types.d.ts +0 -8
- package/project-management/lib/entities/task-type/index.d.ts +0 -3
- package/project-management/lib/entities/task-type/task-type.entity.d.ts +0 -3
- package/project-management/lib/entities/task-type/task-type.service.d.ts +0 -10
- package/project-management/lib/entities/task-type/task-type.types.d.ts +0 -6
- package/project-management/lib/entities/time-sheet/index.d.ts +0 -3
- package/project-management/lib/entities/time-sheet/time-sheet.entity.d.ts +0 -3
- package/project-management/lib/entities/time-sheet/time-sheet.service.d.ts +0 -10
- package/project-management/lib/entities/time-sheet/time-sheet.types.d.ts +0 -8
- package/project-management/lib/entities/work-site/index.d.ts +0 -3
- package/project-management/lib/entities/work-site/work-site.entity.d.ts +0 -3
- package/project-management/lib/entities/work-site/work-site.service.d.ts +0 -10
- package/project-management/lib/entities/work-site/work-site.types.d.ts +0 -8
- package/project-management/lib/entity.provider.d.ts +0 -10
- package/project-management/lib/menu.provider.d.ts +0 -5
- package/project-management/lib/project-management.module.d.ts +0 -6
- package/project-management/lib/search-command.provider.d.ts +0 -4
- package/project-management/lib/setting.provider.d.ts +0 -4
- package/project-management/lib/task-board.provider.d.ts +0 -14
- package/scheduler-job-management/lib/const.d.ts +0 -18
- package/scheduler-job-management/lib/entities/index.d.ts +0 -1
- package/scheduler-job-management/lib/entities/scheduler-job/index.d.ts +0 -4
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.d.ts +0 -3
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.d.ts +0 -6
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +0 -10
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +0 -5
- package/scheduler-job-management/lib/entity.provider.d.ts +0 -9
- package/scheduler-job-management/lib/menu.provider.d.ts +0 -5
- package/scheduler-job-management/lib/scheduler-job-management.module.d.ts +0 -7
- package/security-management/lib/const.d.ts +0 -35
- package/security-management/lib/entities/device-sessions/device-sessions.entity.d.ts +0 -3
- package/security-management/lib/entities/device-sessions/device-sessions.module.d.ts +0 -6
- package/security-management/lib/entities/device-sessions/device-sessions.service.d.ts +0 -12
- package/security-management/lib/entities/device-sessions/device-sessions.types.d.ts +0 -34
- package/security-management/lib/entities/device-sessions/index.d.ts +0 -4
- package/security-management/lib/entities/index.d.ts +0 -5
- package/security-management/lib/entities/profile/index.d.ts +0 -3
- package/security-management/lib/entities/profile/profile.entity.d.ts +0 -3
- package/security-management/lib/entities/profile/profile.module.d.ts +0 -6
- package/security-management/lib/entities/profile/profile.types.d.ts +0 -5
- package/security-management/lib/entities/roles/index.d.ts +0 -4
- package/security-management/lib/entities/roles/roles.entity.d.ts +0 -3
- package/security-management/lib/entities/roles/roles.module.d.ts +0 -6
- package/security-management/lib/entities/roles/roles.service.d.ts +0 -10
- package/security-management/lib/entities/roles/roles.types.d.ts +0 -7
- package/security-management/lib/entities/users/index.d.ts +0 -4
- package/security-management/lib/entities/users/users.entity.d.ts +0 -3
- package/security-management/lib/entities/users/users.module.d.ts +0 -6
- package/security-management/lib/entities/users/users.service.d.ts +0 -10
- package/security-management/lib/entities/users/users.types.d.ts +0 -10
- package/security-management/lib/entity.provider.d.ts +0 -10
- package/security-management/lib/features/permissions/permissions-editor/permissions-editor.component.d.ts +0 -70
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-column.component.d.ts +0 -10
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-designer.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-edit.component.d.ts +0 -8
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-print.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-view.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget.config.d.ts +0 -2
- package/security-management/lib/features/permissions/permissions.module.d.ts +0 -8
- package/security-management/lib/features/permissions/workflows/assign-permissions.workflow.d.ts +0 -10
- package/security-management/lib/menu.keys.d.ts +0 -6
- package/security-management/lib/menu.provider.d.ts +0 -5
- package/security-management/lib/search-command.provider.d.ts +0 -4
- package/security-management/lib/security-management.module.d.ts +0 -12
- package/security-management/lib/user-avatar.provider.d.ts +0 -5
- package/security-management/lib/workflows/terminate-entity.workflow.d.ts +0 -27
- package/settings-management/lib/features/settings/convert-setting-data.d.ts +0 -2
- package/settings-management/lib/features/settings/search-definition.provider.d.ts +0 -4
- package/settings-management/lib/features/settings/search.provider.d.ts +0 -9
- package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +0 -65
- package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +0 -135
- package/settings-management/lib/features/settings/settings.viewmodel.d.ts +0 -46
- package/settings-management/lib/settings-management.module.d.ts +0 -9
- package/text-template-management/lib/const.d.ts +0 -29
- package/text-template-management/lib/entities/category/category.entity.d.ts +0 -3
- package/text-template-management/lib/entities/category/category.module.d.ts +0 -6
- package/text-template-management/lib/entities/category/category.service.d.ts +0 -10
- package/text-template-management/lib/entities/category/category.types.d.ts +0 -5
- package/text-template-management/lib/entities/category/index.d.ts +0 -4
- package/text-template-management/lib/entities/index.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/index.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/tag-template.entity.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/tag-template.service.d.ts +0 -10
- package/text-template-management/lib/entities/tag-template/tag-template.types.d.ts +0 -5
- package/text-template-management/lib/entities/template/index.d.ts +0 -4
- package/text-template-management/lib/entities/template/template.entity.d.ts +0 -3
- package/text-template-management/lib/entities/template/template.module.d.ts +0 -6
- package/text-template-management/lib/entities/template/template.service.d.ts +0 -10
- package/text-template-management/lib/entities/template/template.types.d.ts +0 -9
- package/text-template-management/lib/entity.provider.d.ts +0 -10
- package/text-template-management/lib/menu.provider.d.ts +0 -5
- package/text-template-management/lib/settings.provider.d.ts +0 -4
- package/text-template-management/lib/text-template-management.module.d.ts +0 -8
- package/training-management/lib/const.d.ts +0 -85
- package/training-management/lib/entities/certificate/certificate.entity.d.ts +0 -3
- package/training-management/lib/entities/certificate/certificate.service.d.ts +0 -10
- package/training-management/lib/entities/certificate/certificate.types.d.ts +0 -12
- package/training-management/lib/entities/certificate/index.d.ts +0 -3
- package/training-management/lib/entities/course/course.entity.d.ts +0 -3
- package/training-management/lib/entities/course/course.service.d.ts +0 -10
- package/training-management/lib/entities/course/course.types.d.ts +0 -8
- package/training-management/lib/entities/course/index.d.ts +0 -3
- package/training-management/lib/entities/course-location/course-location.entity.d.ts +0 -3
- package/training-management/lib/entities/course-location/course-location.service.d.ts +0 -10
- package/training-management/lib/entities/course-location/course-location.types.d.ts +0 -6
- package/training-management/lib/entities/course-location/index.d.ts +0 -3
- package/training-management/lib/entities/course-period/course-period.entity.d.ts +0 -3
- package/training-management/lib/entities/course-period/course-period.service.d.ts +0 -10
- package/training-management/lib/entities/course-period/course-period.types.d.ts +0 -6
- package/training-management/lib/entities/course-period/index.d.ts +0 -3
- package/training-management/lib/entities/course-type/course-type.entity.d.ts +0 -3
- package/training-management/lib/entities/course-type/course-type.service.d.ts +0 -10
- package/training-management/lib/entities/course-type/course-type.types.d.ts +0 -5
- package/training-management/lib/entities/course-type/index.d.ts +0 -3
- package/training-management/lib/entities/facilitator-type/facilitator-type.entity.d.ts +0 -3
- package/training-management/lib/entities/facilitator-type/facilitator-type.service.d.ts +0 -10
- package/training-management/lib/entities/facilitator-type/facilitator-type.types.d.ts +0 -6
- package/training-management/lib/entities/facilitator-type/index.d.ts +0 -3
- package/training-management/lib/entities/index.d.ts +0 -12
- package/training-management/lib/entities/location/index.d.ts +0 -3
- package/training-management/lib/entities/location/location.entity.d.ts +0 -3
- package/training-management/lib/entities/location/location.service.d.ts +0 -10
- package/training-management/lib/entities/location/location.types.d.ts +0 -7
- package/training-management/lib/entities/period/index.d.ts +0 -3
- package/training-management/lib/entities/period/period.entity.d.ts +0 -3
- package/training-management/lib/entities/period/period.service.d.ts +0 -10
- package/training-management/lib/entities/period/period.types.d.ts +0 -6
- package/training-management/lib/entities/training/index.d.ts +0 -3
- package/training-management/lib/entities/training/training.entity.d.ts +0 -3
- package/training-management/lib/entities/training/training.service.d.ts +0 -10
- package/training-management/lib/entities/training/training.types.d.ts +0 -13
- package/training-management/lib/entities/training-facilitator/index.d.ts +0 -3
- package/training-management/lib/entities/training-facilitator/training-facilitator.entity.d.ts +0 -3
- package/training-management/lib/entities/training-facilitator/training-facilitator.service.d.ts +0 -10
- package/training-management/lib/entities/training-facilitator/training-facilitator.types.d.ts +0 -7
- package/training-management/lib/entities/training-participant/index.d.ts +0 -3
- package/training-management/lib/entities/training-participant/training-participant.entity.d.ts +0 -3
- package/training-management/lib/entities/training-participant/training-participant.service.d.ts +0 -10
- package/training-management/lib/entities/training-participant/training-participant.types.d.ts +0 -7
- package/training-management/lib/entities/training-type/index.d.ts +0 -3
- package/training-management/lib/entities/training-type/training-type.entity.d.ts +0 -3
- package/training-management/lib/entities/training-type/training-type.service.d.ts +0 -10
- package/training-management/lib/entities/training-type/training-type.types.d.ts +0 -7
- package/training-management/lib/entity.provider.d.ts +0 -10
- package/training-management/lib/menu.provider.d.ts +0 -5
- package/training-management/lib/permission-definition.provider.d.ts +0 -4
- package/training-management/lib/search-command.provider.d.ts +0 -4
- package/training-management/lib/setting.provider.d.ts +0 -4
- package/training-management/lib/training-management.module.d.ts +0 -6
- package/workflow-management/lib/const.d.ts +0 -11
- package/workflow-management/lib/features/task-board/index.d.ts +0 -2
- package/workflow-management/lib/features/task-board/settings.keys.d.ts +0 -5
- package/workflow-management/lib/features/task-board/task-board.module.d.ts +0 -6
- package/workflow-management/lib/features/task-board/task-board.page.d.ts +0 -76
- package/workflow-management/lib/features/task-board/task-board.service.d.ts +0 -13
- package/workflow-management/lib/features/task-board/task-board.viewmodel.d.ts +0 -20
- package/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.page.d.ts +0 -25
- 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$
|
4
|
-
import { AXPWidgetsCatalog,
|
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,
|
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,
|
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
|
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$
|
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$
|
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: "
|
99
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
446
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
478
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
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: "
|
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: "
|
915
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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: "
|
1165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
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: "
|
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: "
|
1445
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
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: "
|
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: "
|
1731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
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: "
|
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: "
|
2181
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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/
|
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: "
|
2375
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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
|
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: "
|
2712
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
2908
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
3059
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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
|
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
|
-
|
3281
|
-
|
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
|
3286
|
-
* @returns
|
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: "
|
3351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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: "
|
3681
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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:
|
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: "
|
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: "
|
3864
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
3865
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
4003
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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: "
|
4074
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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$
|
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: "
|
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: "
|
4225
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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: "
|
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: "
|
4311
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
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: "
|
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: "
|
4975
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
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
|
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: "
|
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
|
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
|