@acorex/modules 20.0.0 → 20.0.1
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/common/index.d.ts +5 -0
- package/dashboard-management/index.d.ts +12 -2
- package/fesm2022/acorex-modules-common.mjs +41 -26
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +192 -105
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- 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
- 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
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs → acorex-modules-document-management-attachment-widget.component-DiE1iI_0.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs → acorex-modules-document-management-create-folder-dialog.component-Bq7bRA5y.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-document-management-details-view.component-DBdPqZC-.mjs → acorex-modules-document-management-details-view.component-C3R3GojY.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-DBdPqZC-.mjs.map → acorex-modules-document-management-details-view.component-C3R3GojY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs → acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs.map → acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-B-a1lpDK.mjs → acorex-modules-document-management-drive.component-BW0gVjML.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive.component-B-a1lpDK.mjs.map → acorex-modules-document-management-drive.component-BW0gVjML.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs → acorex-modules-document-management-large-icons-view.component-B02pUo3R.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs → acorex-modules-document-management-large-tiles-view.component-IOgOKZHe.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-document-management-list-view.component-ygy8vGy8.mjs → acorex-modules-document-management-list-view.component-B1tWiewp.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-ygy8vGy8.mjs.map → acorex-modules-document-management-list-view.component-B1tWiewp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs → acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs → acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs.map → acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs → acorex-modules-document-management-rename-node-dialog.component-BtH4ZteD.mjs} +2 -2
- 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
- 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
- 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
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs → acorex-modules-document-management-small-tiles-view.component-CpYgK225.mjs} +2 -2
- 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
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs → acorex-modules-platform-management-acorex-modules-platform-management-D0GgVrM1.mjs} +4 -4
- 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
- package/fesm2022/{acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs → acorex-modules-platform-management-list-version.component-ZXM2ZJtt.mjs} +2 -2
- 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
- package/fesm2022/{acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs → acorex-modules-platform-management-settings.provider-D5WKWolF.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs.map → acorex-modules-platform-management-settings.provider-D5WKWolF.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/package.json +1 -1
- 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,
|
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:
|
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:
|
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-
|
674
|
-
[class.ax-
|
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
|
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
|
688
|
-
|
689
|
-
|
690
|
-
|
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
|
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-
|
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
|
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-
|
739
|
-
[class.ax-
|
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
|
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
|
753
|
-
|
754
|
-
|
755
|
-
|
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
|
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-
|
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
|
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:
|
939
|
+
minWidth: 2,
|
860
940
|
minHeight: 2,
|
861
|
-
maxWidth:
|
862
|
-
maxHeight:
|
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.
|
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
|
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
|
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-
|
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
|
-
<
|
4139
|
-
class="
|
4140
|
-
|
4141
|
-
|
4142
|
-
|
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
|
4233
|
+
<div class="ax-mt-1">
|
4147
4234
|
<span class="ax-font-bold ax-capitalize">{{ city() }}</span>
|
4148
4235
|
</div>
|
4149
|
-
<div
|
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%}
|
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-
|
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
|
-
<
|
4212
|
-
class="
|
4213
|
-
|
4214
|
-
|
4215
|
-
|
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
|
4305
|
+
<div class="ax-mt-1">
|
4220
4306
|
<span class="ax-font-bold ax-capitalize">{{ city() }}</span>
|
4221
4307
|
</div>
|
4222
|
-
<div
|
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%}
|
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:
|
4337
|
-
maxHeight:
|
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:
|
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
|
-
|
5825
|
-
|
5826
|
-
|
5827
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 <
|
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 <
|
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({
|