@acorex/modules 20.0.0 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/common/index.d.ts +5 -0
  2. package/dashboard-management/index.d.ts +12 -2
  3. package/fesm2022/acorex-modules-common.mjs +41 -26
  4. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  5. package/fesm2022/acorex-modules-content-management.mjs +1 -1
  6. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  7. package/fesm2022/acorex-modules-dashboard-management.mjs +192 -105
  8. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  9. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs → acorex-modules-document-management-acorex-modules-document-management-BP-HLvDt.mjs} +19 -19
  10. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs.map → acorex-modules-document-management-acorex-modules-document-management-BP-HLvDt.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs → acorex-modules-document-management-attachment-widget.component-DiE1iI_0.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs.map → acorex-modules-document-management-attachment-widget.component-DiE1iI_0.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs → acorex-modules-document-management-create-folder-dialog.component-Bq7bRA5y.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs.map → acorex-modules-document-management-create-folder-dialog.component-Bq7bRA5y.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-document-management-details-view.component-DBdPqZC-.mjs → acorex-modules-document-management-details-view.component-C3R3GojY.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-document-management-details-view.component-DBdPqZC-.mjs.map → acorex-modules-document-management-details-view.component-C3R3GojY.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs → acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs.map → acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-document-management-drive.component-B-a1lpDK.mjs → acorex-modules-document-management-drive.component-BW0gVjML.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-document-management-drive.component-B-a1lpDK.mjs.map → acorex-modules-document-management-drive.component-BW0gVjML.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs → acorex-modules-document-management-large-icons-view.component-B02pUo3R.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs.map → acorex-modules-document-management-large-icons-view.component-B02pUo3R.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs → acorex-modules-document-management-large-tiles-view.component-IOgOKZHe.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs.map → acorex-modules-document-management-large-tiles-view.component-IOgOKZHe.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-document-management-list-view.component-ygy8vGy8.mjs → acorex-modules-document-management-list-view.component-B1tWiewp.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-document-management-list-view.component-ygy8vGy8.mjs.map → acorex-modules-document-management-list-view.component-B1tWiewp.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs → acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs} +2 -2
  28. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs.map +1 -0
  29. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs → acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs.map → acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs → acorex-modules-document-management-rename-node-dialog.component-BtH4ZteD.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs.map → acorex-modules-document-management-rename-node-dialog.component-BtH4ZteD.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs → acorex-modules-document-management-small-icons-view.component-CSZM_GTs.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs.map → acorex-modules-document-management-small-icons-view.component-CSZM_GTs.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs → acorex-modules-document-management-small-tiles-view.component-CpYgK225.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs.map → acorex-modules-document-management-small-tiles-view.component-CpYgK225.mjs.map} +1 -1
  37. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  38. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs → acorex-modules-platform-management-acorex-modules-platform-management-D0GgVrM1.mjs} +4 -4
  39. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-D0GgVrM1.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs → acorex-modules-platform-management-list-version.component-ZXM2ZJtt.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs.map → acorex-modules-platform-management-list-version.component-ZXM2ZJtt.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs → acorex-modules-platform-management-settings.provider-D5WKWolF.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs.map → acorex-modules-platform-management-settings.provider-D5WKWolF.mjs.map} +1 -1
  44. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  45. package/fesm2022/acorex-modules-security-management.mjs +1 -1
  46. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs.map +0 -1
@@ -5,7 +5,7 @@ import { AXPWidgetsCatalog, AXPLayoutWidgetComponent, AXPWidgetGroupEnum, AXPVal
5
5
  import { AXMEntityCrudServiceImpl, AXPEntityService, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
6
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, input, signal, computed, effect, ChangeDetectionStrategy, Component, ChangeDetectorRef, viewChild, ElementRef, HostListener, output, InjectionToken, HostBinding, NgModule, contentChild, afterNextRender, model, ViewEncapsulation } from '@angular/core';
8
+ import { Injectable, inject, Injector, input, signal, computed, effect, ChangeDetectionStrategy, Component, ElementRef, ChangeDetectorRef, viewChild, 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';
@@ -590,7 +590,7 @@ class AXMAnalogClockComponent {
590
590
  </div>
591
591
  </div>
592
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 }); }
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:2;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:3;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:4;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:5;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
594
  }
595
595
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMAnalogClockComponent, decorators: [{
596
596
  type: Component,
@@ -633,21 +633,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
633
633
  </div>
634
634
  </div>
635
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"] }]
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:2;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:3;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:4;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:5;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
637
  }], ctorParameters: () => [] });
638
638
 
639
639
  class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
640
640
  constructor() {
641
641
  super();
642
642
  this.regionalService = inject(AXPRegionalService);
643
+ this.elementRef = inject(ElementRef);
643
644
  this.userTimezone = signal(null);
645
+ this.containerWidth = signal(0);
646
+ this.containerHeight = signal(0);
647
+ this.resizeObserver = null;
644
648
  this.timezone = computed(() => {
645
649
  const configuredTimezone = this.options()?.timezone;
646
650
  return configuredTimezone || this.userTimezone();
647
651
  });
648
652
  this.others = computed(() => (this.options()?.others ?? []));
653
+ this.isHorizontal = computed(() => {
654
+ const width = this.containerWidth();
655
+ const height = this.containerHeight();
656
+ // If width is greater than height or they are equal, use horizontal layout
657
+ return width >= height - (this.others().length > 0 ? 75 : 0);
658
+ });
659
+ this.hasEnoughSpaceForHorizontal = computed(() => {
660
+ const width = this.containerWidth();
661
+ const clockCount = this.others().length;
662
+ // Estimate minimum width needed for horizontal layout
663
+ // Each clock needs about 100px (60px clock + padding + text)
664
+ const minWidthNeeded = clockCount * 100;
665
+ return width >= minWidthNeeded && clockCount <= 4;
666
+ });
649
667
  this.loadUserTimezone();
650
668
  }
669
+ ngAfterViewInit() {
670
+ this.setupResizeObserver();
671
+ }
672
+ ngOnDestroy() {
673
+ this.resizeObserver?.disconnect();
674
+ }
675
+ setupResizeObserver() {
676
+ if (typeof ResizeObserver !== 'undefined') {
677
+ this.resizeObserver = new ResizeObserver((entries) => {
678
+ for (const entry of entries) {
679
+ if (entry.target === this.elementRef.nativeElement) {
680
+ const { width, height } = entry.contentRect;
681
+ this.containerWidth.set(width);
682
+ this.containerHeight.set(height);
683
+ }
684
+ }
685
+ });
686
+ this.resizeObserver.observe(this.elementRef.nativeElement);
687
+ }
688
+ }
651
689
  async loadUserTimezone() {
652
690
  try {
653
691
  const timezoneCode = await this.regionalService.getBrowserTimeZoneCode();
@@ -663,31 +701,41 @@ class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
663
701
  }
664
702
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMClockWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
665
703
  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
- >
704
+ <div class="ax-p-2 ax-h-full ax-overflow-hidden" [class.ax-bg-light]="others().length > 0">
670
705
  <!-- Main Clock Section -->
671
706
  <div class="ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full">
672
707
  <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"
708
+ class="ax-flex ax-items-center ax-justify-between ax-gap-2 ax-w-full ax-grow"
709
+ [class.ax-flex-row]="isHorizontal()"
710
+ [class.ax-rounded-full]="isHorizontal() && others().length > 0"
711
+ [class.ax-flex-col]="!isHorizontal()"
712
+ [class.ax-rounded-xl]="!isHorizontal() && others().length > 0"
675
713
  [class.ax-border]="others().length > 0"
676
714
  [class.ax-border-gray-100]="others().length > 0"
677
715
  [class.ax-shadow-lg]="others().length > 0"
678
716
  [class.ax-bg-lighter]="others().length > 0"
717
+ [class.ax-p-2]="others().length > 0"
679
718
  >
680
- <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow">
719
+ <div
720
+ class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-[100px] ax-min-h-[100px]"
721
+ [style.height]="isHorizontal() ? '65%' : 'auto'"
722
+ [style.width]="isHorizontal() ? 'auto' : '65%'"
723
+ >
681
724
  <axm-analog-clock
682
725
  [timezone]="timezone()?.iana"
683
726
  [classes]="others().length > 0 ? 'ax-bg-lightest' : undefined"
684
727
  ></axm-analog-clock>
685
728
  </div>
686
729
  @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>
730
+ <div
731
+ class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px]"
732
+ [class.ax-pe-8]="isHorizontal()"
733
+ >
734
+ @if (timezone()?.code) {
735
+ <span class="ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide">{{
736
+ timezone()?.code
737
+ }}</span>
738
+ }
691
739
  <span class="ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0">{{ timezone()?.abbr }}</span>
692
740
  </div>
693
741
  }
@@ -696,13 +744,15 @@ class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
696
744
  <!-- Additional Clocks Section -->
697
745
  @if (others().length > 0) {
698
746
  <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">
747
+ <div
748
+ class="ax-flex ax-justify-around ax-items-center"
749
+ [class.ax-flex-wrap]="hasEnoughSpaceForHorizontal()"
750
+ [class.ax-gap-3]="true"
751
+ [class.ax-overflow-auto]="true"
752
+ >
700
753
  @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
- >
754
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-2 ax-flex-wrap ax-gap-2">
755
+ <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-rounded-lg ax-size-16">
706
756
  <axm-analog-clock
707
757
  [timezone]="clock.iana"
708
758
  [showNumbers]="false"
@@ -710,10 +760,19 @@ class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
710
760
  ></axm-analog-clock>
711
761
  </div>
712
762
  @if (clock.abbr) {
713
- <div class="ax-text-center ax-w-full ax-pt-2">
763
+ <div
764
+ [class.ax-text-center]="hasEnoughSpaceForHorizontal()"
765
+ [class.ax-pt-1]="hasEnoughSpaceForHorizontal()"
766
+ [class.ax-pl-1]="!hasEnoughSpaceForHorizontal()"
767
+ >
714
768
  <span class="ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block">{{
715
769
  clock.abbr
716
770
  }}</span>
771
+ @if (clock.code) {
772
+ <span class="ax-text-xs ax-font-light ax-text-gray-500 ax-truncate ax-block">{{
773
+ clock.code
774
+ }}</span>
775
+ }
717
776
  </div>
718
777
  }
719
778
  </div>
@@ -728,31 +787,41 @@ class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {
728
787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMClockWidgetViewComponent, decorators: [{
729
788
  type: Component,
730
789
  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
- >
790
+ <div class="ax-p-2 ax-h-full ax-overflow-hidden" [class.ax-bg-light]="others().length > 0">
735
791
  <!-- Main Clock Section -->
736
792
  <div class="ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full">
737
793
  <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"
794
+ class="ax-flex ax-items-center ax-justify-between ax-gap-2 ax-w-full ax-grow"
795
+ [class.ax-flex-row]="isHorizontal()"
796
+ [class.ax-rounded-full]="isHorizontal() && others().length > 0"
797
+ [class.ax-flex-col]="!isHorizontal()"
798
+ [class.ax-rounded-xl]="!isHorizontal() && others().length > 0"
740
799
  [class.ax-border]="others().length > 0"
741
800
  [class.ax-border-gray-100]="others().length > 0"
742
801
  [class.ax-shadow-lg]="others().length > 0"
743
802
  [class.ax-bg-lighter]="others().length > 0"
803
+ [class.ax-p-2]="others().length > 0"
744
804
  >
745
- <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow">
805
+ <div
806
+ class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-[100px] ax-min-h-[100px]"
807
+ [style.height]="isHorizontal() ? '65%' : 'auto'"
808
+ [style.width]="isHorizontal() ? 'auto' : '65%'"
809
+ >
746
810
  <axm-analog-clock
747
811
  [timezone]="timezone()?.iana"
748
812
  [classes]="others().length > 0 ? 'ax-bg-lightest' : undefined"
749
813
  ></axm-analog-clock>
750
814
  </div>
751
815
  @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>
816
+ <div
817
+ class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px]"
818
+ [class.ax-pe-8]="isHorizontal()"
819
+ >
820
+ @if (timezone()?.code) {
821
+ <span class="ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide">{{
822
+ timezone()?.code
823
+ }}</span>
824
+ }
756
825
  <span class="ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0">{{ timezone()?.abbr }}</span>
757
826
  </div>
758
827
  }
@@ -761,13 +830,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
761
830
  <!-- Additional Clocks Section -->
762
831
  @if (others().length > 0) {
763
832
  <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">
833
+ <div
834
+ class="ax-flex ax-justify-around ax-items-center"
835
+ [class.ax-flex-wrap]="hasEnoughSpaceForHorizontal()"
836
+ [class.ax-gap-3]="true"
837
+ [class.ax-overflow-auto]="true"
838
+ >
765
839
  @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
- >
840
+ <div class="ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-2 ax-flex-wrap ax-gap-2">
841
+ <div class="ax-aspect-square ax-flex ax-items-center ax-justify-center ax-rounded-lg ax-size-16">
771
842
  <axm-analog-clock
772
843
  [timezone]="clock.iana"
773
844
  [showNumbers]="false"
@@ -775,10 +846,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
775
846
  ></axm-analog-clock>
776
847
  </div>
777
848
  @if (clock.abbr) {
778
- <div class="ax-text-center ax-w-full ax-pt-2">
849
+ <div
850
+ [class.ax-text-center]="hasEnoughSpaceForHorizontal()"
851
+ [class.ax-pt-1]="hasEnoughSpaceForHorizontal()"
852
+ [class.ax-pl-1]="!hasEnoughSpaceForHorizontal()"
853
+ >
779
854
  <span class="ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block">{{
780
855
  clock.abbr
781
856
  }}</span>
857
+ @if (clock.code) {
858
+ <span class="ax-text-xs ax-font-light ax-text-gray-500 ax-truncate ax-block">{{
859
+ clock.code
860
+ }}</span>
861
+ }
782
862
  </div>
783
863
  }
784
864
  </div>
@@ -856,10 +936,10 @@ const AXPAnalogClockWidget = {
856
936
  dimensions: {
857
937
  width: 2,
858
938
  height: 3,
859
- minWidth: 1,
939
+ minWidth: 2,
860
940
  minHeight: 2,
861
- maxWidth: 4,
862
- maxHeight: 6,
941
+ maxWidth: 3,
942
+ maxHeight: 7,
863
943
  },
864
944
  },
865
945
  };
@@ -2549,6 +2629,7 @@ class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent {
2549
2629
  this.isEditing = signal(false);
2550
2630
  this.wysiwyg = viewChild('wysiwyg');
2551
2631
  this.value = computed(() => this.getValue());
2632
+ this.typeValue = signal('');
2552
2633
  this.date = computed(() => this.options()?.date ?? new Date());
2553
2634
  this.bgColor = computed(() => this.options()?.backgroundColor ?? '#FFF8B8');
2554
2635
  this.color = signal('#333333');
@@ -2582,6 +2663,7 @@ class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent {
2582
2663
  }
2583
2664
  // Save changes and exit edit mode
2584
2665
  saveChanges() {
2666
+ this.setValue(this.typeValue());
2585
2667
  this.isEditing.set(false);
2586
2668
  }
2587
2669
  setColor(color) {
@@ -2589,7 +2671,7 @@ class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent {
2589
2671
  }
2590
2672
  valueChange(event) {
2591
2673
  if (event.isUserInteraction) {
2592
- this.setValue(event.value);
2674
+ this.typeValue.set(event.value);
2593
2675
  }
2594
2676
  }
2595
2677
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -3685,7 +3767,10 @@ class AXMAdvancedWeatherViewComponent extends AXPValueWidgetComponent {
3685
3767
  </div>
3686
3768
  </div>
3687
3769
 
3688
- <div class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0">
3770
+ <div
3771
+ class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-shrink-0"
3772
+ [class]="displayedHourlyForecast().length > 5 ? 'ax-overflow-x-auto' : 'ax-overflow-x-visible'"
3773
+ >
3689
3774
  @for (hour of displayedHourlyForecast(); track hour.time) {
3690
3775
  <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2">
3691
3776
  <span class="ax-text-sm ax-font-medium ax-text-muted">{{ getHourLabel(hour.time) }}</span>
@@ -3823,7 +3908,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
3823
3908
  </div>
3824
3909
  </div>
3825
3910
 
3826
- <div class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0">
3911
+ <div
3912
+ class="ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-shrink-0"
3913
+ [class]="displayedHourlyForecast().length > 5 ? 'ax-overflow-x-auto' : 'ax-overflow-x-visible'"
3914
+ >
3827
3915
  @for (hour of displayedHourlyForecast(); track hour.time) {
3828
3916
  <div class="ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2">
3829
3917
  <span class="ax-text-sm ax-font-medium ax-text-muted">{{ getHourLabel(hour.time) }}</span>
@@ -4125,28 +4213,27 @@ class AXMMinimalWeatherViewComponent extends AXPValueWidgetComponent {
4125
4213
  @if (weatherData() && !isLoading() && !hasError()) {
4126
4214
  <div
4127
4215
  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
4216
  [attr.aria-label]="'Current weather for ' + city()"
4130
4217
  >
4131
- <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2">
4218
+ <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2 ax-gap-2 ax-flex-wrap">
4132
4219
  <img
4133
4220
  [src]="getConditionIcon()"
4134
- class="ax-h-[180%] -ax-m-2"
4221
+ class="ax-size-28 ax-object-cover -ax-m-6"
4135
4222
  [alt]="weatherData()?.current?.condition + ' weather icon'"
4136
4223
  loading="lazy"
4137
4224
  />
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
- >
4225
+ <div class="temperature ax-flex ax-justify-center ax-items-start">
4226
+ <span class="ax-text-5xl" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)">
4227
+ {{ getCurrentTemperature() | number: '1.0-0' }}
4228
+ </span>
4229
+ <span class="ax-text-lg" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)">{{ temperatureUnit() }}</span>
4230
+ </div>
4144
4231
  </div>
4145
4232
  <div class="ax-text-start ax-ps-6">
4146
- <div style="font-size: max(16px, calc(19cqw - 25px))" class="ax-mt-1">
4233
+ <div class="ax-mt-1">
4147
4234
  <span class="ax-font-bold ax-capitalize">{{ city() }}</span>
4148
4235
  </div>
4149
- <div style="font-size: max(12px, calc(14cqw - 25px))" class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4236
+ <div class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4150
4237
  <span aria-label="High temperature">
4151
4238
  H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4152
4239
  </span>
@@ -4190,7 +4277,7 @@ class AXMMinimalWeatherViewComponent extends AXPValueWidgetComponent {
4190
4277
  }
4191
4278
  </div>
4192
4279
  }
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 }); }
4280
+ `, isInline: true, styles: [":host{width:100%;height:100%}\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
4281
  }
4195
4282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMMinimalWeatherViewComponent, decorators: [{
4196
4283
  type: Component,
@@ -4198,28 +4285,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
4198
4285
  @if (weatherData() && !isLoading() && !hasError()) {
4199
4286
  <div
4200
4287
  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
4288
  [attr.aria-label]="'Current weather for ' + city()"
4203
4289
  >
4204
- <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2">
4290
+ <div class="weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2 ax-gap-2 ax-flex-wrap">
4205
4291
  <img
4206
4292
  [src]="getConditionIcon()"
4207
- class="ax-h-[180%] -ax-m-2"
4293
+ class="ax-size-28 ax-object-cover -ax-m-6"
4208
4294
  [alt]="weatherData()?.current?.condition + ' weather icon'"
4209
4295
  loading="lazy"
4210
4296
  />
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
- >
4297
+ <div class="temperature ax-flex ax-justify-center ax-items-start">
4298
+ <span class="ax-text-5xl" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)">
4299
+ {{ getCurrentTemperature() | number: '1.0-0' }}
4300
+ </span>
4301
+ <span class="ax-text-lg" style="text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)">{{ temperatureUnit() }}</span>
4302
+ </div>
4217
4303
  </div>
4218
4304
  <div class="ax-text-start ax-ps-6">
4219
- <div style="font-size: max(16px, calc(19cqw - 25px))" class="ax-mt-1">
4305
+ <div class="ax-mt-1">
4220
4306
  <span class="ax-font-bold ax-capitalize">{{ city() }}</span>
4221
4307
  </div>
4222
- <div style="font-size: max(12px, calc(14cqw - 25px))" class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4308
+ <div class="ax-pt-2 ax-flex ax-gap-4 ax-opacity-75">
4223
4309
  <span aria-label="High temperature">
4224
4310
  H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>
4225
4311
  </span>
@@ -4268,7 +4354,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
4268
4354
  provide: AXPWeatherApiAbstract,
4269
4355
  useClass: AXPWeatherApiService,
4270
4356
  },
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"] }]
4357
+ ], styles: [":host{width:100%;height:100%}\n"] }]
4272
4358
  }], ctorParameters: () => [] });
4273
4359
 
4274
4360
  var minimalWeather_component = /*#__PURE__*/Object.freeze({
@@ -4333,8 +4419,8 @@ const AXPMinimalWeatherWidget = {
4333
4419
  height: 2,
4334
4420
  minWidth: 1,
4335
4421
  minHeight: 2,
4336
- maxWidth: 4,
4337
- maxHeight: 5,
4422
+ maxWidth: 2,
4423
+ maxHeight: 3,
4338
4424
  },
4339
4425
  },
4340
4426
  };
@@ -5183,8 +5269,8 @@ class AXMDashboardManagementModule {
5183
5269
  AXPGaugeChartWidget,
5184
5270
  //utility
5185
5271
  AXPStickyNoteWidget,
5186
- AXPClockCalendarWidget,
5187
- AXPWeatherWidget,
5272
+ //AXPClockCalendarWidget,
5273
+ //AXPWeatherWidget,
5188
5274
  AXPTaskListWidget,
5189
5275
  AXPMinimalWeatherWidget,
5190
5276
  AXPAdvancedWeatherWidget,
@@ -5206,8 +5292,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
5206
5292
  AXPGaugeChartWidget,
5207
5293
  //utility
5208
5294
  AXPStickyNoteWidget,
5209
- AXPClockCalendarWidget,
5210
- AXPWeatherWidget,
5295
+ //AXPClockCalendarWidget,
5296
+ //AXPWeatherWidget,
5211
5297
  AXPTaskListWidget,
5212
5298
  AXPMinimalWeatherWidget,
5213
5299
  AXPAdvancedWeatherWidget,
@@ -5616,8 +5702,7 @@ const createInitialState = () => ({
5616
5702
  minRow: 9,
5617
5703
  column: 12,
5618
5704
  responsiveLayout: [
5619
- { column: 12, width: 2048 },
5620
- { column: 6, width: 768 },
5705
+ { column: 4, width: 768 },
5621
5706
  { column: 1, width: 480 },
5622
5707
  ],
5623
5708
  },
@@ -5821,26 +5906,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
5821
5906
  const updatedDashboards = store
5822
5907
  .dashboards()
5823
5908
  .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));
5824
- // If lock state changed, update the dashboard options too
5825
- if (currentDashboard.locked !== updatedDashboard.locked) {
5826
- const baseOptions = { ...store.dashboardsOption() };
5827
- const updatedOptions = {
5828
- ...baseOptions,
5829
- disableDrag: updatedDashboard.locked === true,
5830
- disableResize: updatedDashboard.locked === true,
5831
- };
5832
- patchState(store, {
5833
- allDashboards: updatedAllDashboards,
5834
- dashboards: updatedDashboards,
5835
- dashboardsOption: updatedOptions,
5836
- });
5837
- }
5838
- else {
5839
- patchState(store, {
5840
- allDashboards: updatedAllDashboards,
5841
- dashboards: updatedDashboards,
5842
- });
5843
- }
5909
+ patchState(store, {
5910
+ allDashboards: updatedAllDashboards,
5911
+ dashboards: updatedDashboards,
5912
+ });
5844
5913
  }
5845
5914
  catch (error) {
5846
5915
  console.error('Error editing dashboard:', error);
@@ -5886,7 +5955,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
5886
5955
  const updatedDashboards = store
5887
5956
  .dashboards()
5888
5957
  .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));
5889
- patchState(store, { dashboards: updatedDashboards });
5958
+ const updatedAllDashboards = store
5959
+ .availableDashboards()
5960
+ .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));
5961
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
5890
5962
  }
5891
5963
  catch (error) {
5892
5964
  console.error('Error adding widget:', error);
@@ -5936,7 +6008,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
5936
6008
  const updatedDashboards = store
5937
6009
  .dashboards()
5938
6010
  .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));
5939
- patchState(store, { dashboards: updatedDashboards });
6011
+ const updatedAllDashboards = store
6012
+ .availableDashboards()
6013
+ .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));
6014
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
5940
6015
  },
5941
6016
  async handleConfigChange(dashboard) {
5942
6017
  await dashboardService.updateOne(dashboard.id, dashboardLayoutToModel(dashboard));
@@ -5964,7 +6039,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
5964
6039
  const updatedDashboards = store
5965
6040
  .dashboards()
5966
6041
  .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
5967
- patchState(store, { dashboards: updatedDashboards });
6042
+ const updatedAllDashboards = store
6043
+ .availableDashboards()
6044
+ .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6045
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
5968
6046
  },
5969
6047
  async handlePopupConfiguration(widgetNode) {
5970
6048
  if (!store.selectedDashboard())
@@ -5985,7 +6063,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
5985
6063
  const updatedDashboards = store
5986
6064
  .dashboards()
5987
6065
  .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
5988
- patchState(store, { dashboards: updatedDashboards });
6066
+ const updatedAllDashboards = store
6067
+ .availableDashboards()
6068
+ .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6069
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
5989
6070
  }
5990
6071
  catch (error) {
5991
6072
  console.error('Error handling widget configuration:', error);
@@ -6007,7 +6088,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
6007
6088
  const updatedDashboards = store
6008
6089
  .dashboards()
6009
6090
  .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6010
- patchState(store, { dashboards: updatedDashboards });
6091
+ const updatedAllDashboards = store
6092
+ .availableDashboards()
6093
+ .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6094
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
6011
6095
  }
6012
6096
  catch (error) {
6013
6097
  console.error('Error handling widget value change:', error);
@@ -6035,7 +6119,10 @@ withMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogSer
6035
6119
  const updatedDashboards = store
6036
6120
  .dashboards()
6037
6121
  .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6038
- patchState(store, { dashboards: updatedDashboards });
6122
+ const updatedAllDashboards = store
6123
+ .availableDashboards()
6124
+ .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));
6125
+ patchState(store, { dashboards: updatedDashboards, allDashboards: updatedAllDashboards });
6039
6126
  }
6040
6127
  catch (error) {
6041
6128
  console.error('Error handling widget options change:', error);
@@ -6267,7 +6354,7 @@ class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent {
6267
6354
  provide: AXPPageLayoutBase,
6268
6355
  useExisting: AXMDashboardHomeComponent,
6269
6356
  },
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 }); }
6357
+ ], 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 <div class=\"ax-flex ax-items-center ax-gap-1\">\n <p class=\"ax-text-center\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }},</p>\n <button (click)=\"execute({ name: 'new-dashboard' })\" class=\"ax-underline\">\n {{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}\n </button>\n </div>\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 <div class=\"ax-flex ax-items-center ax-gap-1\">\n <p class=\"ax-text-center\">{{ t('no-widgets', { scope: 'dashboard' }) | async }},</p>\n <button (click)=\"execute({ name: 'new-widget' })\" class=\"ax-underline\">\n {{ t('add-widget', { scope: 'dashboard' }) | async }}\n </button>\n </div>\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 }); }
6271
6358
  }
6272
6359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMDashboardHomeComponent, decorators: [{
6273
6360
  type: Component,
@@ -6293,7 +6380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
6293
6380
  provide: AXPPageLayoutBase,
6294
6381
  useExisting: AXMDashboardHomeComponent,
6295
6382
  },
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"] }]
6383
+ ], 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 <div class=\"ax-flex ax-items-center ax-gap-1\">\n <p class=\"ax-text-center\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }},</p>\n <button (click)=\"execute({ name: 'new-dashboard' })\" class=\"ax-underline\">\n {{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}\n </button>\n </div>\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 <div class=\"ax-flex ax-items-center ax-gap-1\">\n <p class=\"ax-text-center\">{{ t('no-widgets', { scope: 'dashboard' }) | async }},</p>\n <button (click)=\"execute({ name: 'new-widget' })\" class=\"ax-underline\">\n {{ t('add-widget', { scope: 'dashboard' }) | async }}\n </button>\n </div>\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"] }]
6297
6384
  }] });
6298
6385
 
6299
6386
  var homeDashboard = /*#__PURE__*/Object.freeze({