@acorex-platform/module-dashboard-management-client 0.0.21

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.
@@ -0,0 +1,1234 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy, OnInit, Signal } from '@angular/core';
3
+ import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
4
+ import { AXPBaseWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
5
+ import * as _acorex_platform_module_dashboard_management_client_contracts from '@acorex-platform/module-dashboard-management-client/contracts';
6
+ import { AXPMultiLanguageString, AXMDashboardWidgetLayoutMap, AXMDashboardScope, AXMDashboardScopeRef, AXMDashboardBreakpoint, AXMCommonDashboardEntityModel } from '@acorex-platform/module-dashboard-management-client/contracts';
7
+ import * as _ngrx_signals from '@ngrx/signals';
8
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
9
+ import { AXPWidgetNode, AXPMultiLanguageString as AXPMultiLanguageString$1, AXPActionMenuItem, AXPExecuteCommand, AXPOptionsData, AXPDefinitionCategory } from '@acorex-platform/framework-shared/core';
10
+ import * as _acorex_components_grid_layout_builder from '@acorex/components/grid-layout-builder';
11
+ import { AXGridLayoutOptions, AXGridLayoutNode, AXGridLayoutEvent } from '@acorex/components/grid-layout-builder';
12
+ import * as _acorex_platform_framework_client_themes_shared from '@acorex-platform/framework-client/themes/shared';
13
+ import { AXDialogService } from '@acorex/components/dialog';
14
+ import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
15
+ import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
16
+ import { AXPopupService } from '@acorex/components/popup';
17
+ import { AXBasePageComponent } from '@acorex/components/page';
18
+ import { AXPWidgetPropertiesChangedEvent } from '@acorex-platform/framework-client/layout/components';
19
+ import { AXItemClickEvent, AXValueChangedEvent } from '@acorex/cdk/common';
20
+ import { AXButtonItemComponent } from '@acorex/components/button';
21
+ import * as _acorex_platform_module_dashboard_management_contracts from '@acorex-platform/module-dashboard-management-contracts';
22
+ import { AXMDashboardBreakpoint as AXMDashboardBreakpoint$1, AXGridLayoutSize, AXMCommonDashboardEntityModel as AXMCommonDashboardEntityModel$1 } from '@acorex-platform/module-dashboard-management-contracts';
23
+ import * as _acorex_platform_module_dashboard_management_client from '@acorex-platform/module-dashboard-management-client';
24
+ import * as dist_libs_modules_dashboard_management_contracts_src from 'dist/libs/modules/dashboard-management/contracts/src';
25
+ import * as _acorex_charts_chart_legend from '@acorex/charts/chart-legend';
26
+ import { AXBarChartData, AXBarChartOption } from '@acorex/charts/bar-chart';
27
+ import { Observable } from 'rxjs';
28
+ import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
29
+ import { AXDonutChartData, AXDonutChartOption } from '@acorex/charts/donut-chart';
30
+ import { AXFunnelData, AXFunnelChartOption } from '@acorex/charts/funnel-chart';
31
+ import { AXGaugeChartOption } from '@acorex/charts/gauge-chart';
32
+ import { AXHeatmapData, AXHeatmapChartOption } from '@acorex/charts/heatmap-chart';
33
+ import { AXLineChartData, AXLineChartOption, AXLineChartPointClickEvent } from '@acorex/charts/line-chart';
34
+ import { AXFormatService } from '@acorex/core/format';
35
+ import { AXTranslationService } from '@acorex/core/translation';
36
+ import { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';
37
+
38
+ declare class AXMDashboardManagementModule {
39
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDashboardManagementModule, never>;
40
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMDashboardManagementModule, never, [typeof i1.AXPWidgetCoreModule], never>;
41
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMDashboardManagementModule>;
42
+ }
43
+
44
+ interface AXMDashboardLayout {
45
+ id: string;
46
+ title: AXPMultiLanguageString;
47
+ description?: AXPMultiLanguageString;
48
+ widgets: AXMDashboardWidgetData[];
49
+ createdAt?: string | Date;
50
+ updatedAt?: string | Date;
51
+ createdBy?: string;
52
+ updatedBy?: string;
53
+ isArchived?: boolean;
54
+ archivedAt?: string | Date;
55
+ locked?: boolean;
56
+ scope: AXMDashboardScope;
57
+ scopeRef: AXMDashboardScopeRef;
58
+ categoryIds?: string[];
59
+ }
60
+ type AXMDashboardWidgetData = {
61
+ config: AXMDashboardWidgetLayoutMap;
62
+ node?: AXPWidgetNode;
63
+ };
64
+
65
+ /**
66
+ * Dashboard Signal Store: manages dashboards, widgets and permissions.
67
+ */
68
+ declare const AXMDashboardStore: _angular_core.Type<{
69
+ dashboards: _angular_core.Signal<AXMDashboardLayout[]>;
70
+ allDashboards: _angular_core.Signal<AXMDashboardLayout[]>;
71
+ currentDashboardId: _angular_core.Signal<string | null>;
72
+ isAdmin: _angular_core.Signal<boolean>;
73
+ userRoleIds: _angular_core.Signal<string[]>;
74
+ dashboardsOption: _ngrx_signals.DeepSignal<AXGridLayoutOptions>;
75
+ gridContainerWidth: _angular_core.Signal<number>;
76
+ isLoading: _angular_core.Signal<boolean>;
77
+ currentBreakpoint: _angular_core.Signal<AXMDashboardBreakpoint>;
78
+ isBreakpointTransitioning: _angular_core.Signal<boolean>;
79
+ entityDetailLayoutLock: _angular_core.Signal<boolean>;
80
+ readonly: _angular_core.Signal<boolean>;
81
+ selectedDashboard: _angular_core.Signal<AXMDashboardLayout | null>;
82
+ isUserAdmin: _angular_core.Signal<boolean>;
83
+ availableDashboards: _angular_core.Signal<AXMDashboardLayout[]>;
84
+ currentLayoutOptions: _angular_core.Signal<AXGridLayoutOptions>;
85
+ currentWidgets: _angular_core.Signal<{
86
+ resolvedOptions: AXGridLayoutNode;
87
+ config: _acorex_platform_module_dashboard_management_client_contracts.AXMDashboardWidgetLayoutMap;
88
+ node?: AXPWidgetNode;
89
+ }[]>;
90
+ canConfigureWidget: _angular_core.Signal<(widget: AXMDashboardWidgetData) => boolean>;
91
+ isWidgetLocked: _angular_core.Signal<(widget: AXMDashboardWidgetData) => boolean>;
92
+ setCurrentDashboard: (dashboardId: string) => void;
93
+ addDashboard: () => Promise<void>;
94
+ editDashboard: () => Promise<void>;
95
+ cloneDashboard: () => Promise<void>;
96
+ updateDashboardMetadataFromEditor: (form: {
97
+ title: AXPMultiLanguageString$1;
98
+ description?: AXPMultiLanguageString$1;
99
+ roleIds: string[];
100
+ isArchived: boolean;
101
+ locked: boolean;
102
+ }) => Promise<boolean>;
103
+ addWidget: () => Promise<void>;
104
+ removeDashboard: (id: string) => Promise<void>;
105
+ removeWidget: (dashboardId: string, widgetId: string) => Promise<void>;
106
+ handleConfigChange: (dashboard: AXMDashboardLayout) => Promise<void>;
107
+ onGridChange: (event: AXGridLayoutEvent) => void;
108
+ handlePopupConfiguration: (widgetNode: AXPWidgetNode) => Promise<void>;
109
+ handleValueChanged: (widgetNode: AXPWidgetNode, data: unknown) => Promise<void>;
110
+ handleOptionsChanged: (widgetNode: AXPWidgetNode, data: unknown) => Promise<void>;
111
+ setIsAdmin: (isAdmin: boolean) => void;
112
+ updateGridContainerWidth: (width: number) => void;
113
+ setEntityDetailLayoutLock: (locked: boolean) => void;
114
+ hydrateFromEntityDetailModel: (model: AXMCommonDashboardEntityModel) => void;
115
+ toggleLockDashboard: () => Promise<void>;
116
+ isDashboardLocked: () => boolean;
117
+ } & _ngrx_signals.StateSource<{
118
+ dashboards: AXMDashboardLayout[];
119
+ allDashboards: AXMDashboardLayout[];
120
+ currentDashboardId: string | null;
121
+ isAdmin: boolean;
122
+ userRoleIds: string[];
123
+ dashboardsOption: AXGridLayoutOptions;
124
+ gridContainerWidth: number;
125
+ isLoading: boolean;
126
+ currentBreakpoint: AXMDashboardBreakpoint;
127
+ isBreakpointTransitioning: boolean;
128
+ entityDetailLayoutLock: boolean;
129
+ readonly: boolean;
130
+ }>>;
131
+
132
+ type AXMDashboardHomeSkeletonVariant = 'list' | 'compact' | 'action';
133
+ interface AXMDashboardHomeSkeletonWidget {
134
+ id: string;
135
+ area: string;
136
+ variant: AXMDashboardHomeSkeletonVariant;
137
+ }
138
+ declare class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent implements OnDestroy {
139
+ #private;
140
+ protected readonly rootConfig: {
141
+ config: {
142
+ readonly i18n: "dashboard-management";
143
+ readonly module: "DashboardManagement";
144
+ };
145
+ module: {
146
+ module: "DashboardManagement";
147
+ name: "DashboardManagement";
148
+ title: string;
149
+ icon: string;
150
+ };
151
+ entities: {
152
+ dashboard: {
153
+ name: string;
154
+ title: string;
155
+ titlePlural: string;
156
+ icon: string;
157
+ };
158
+ };
159
+ widgets: {
160
+ barChart: string;
161
+ donutChart: string;
162
+ lineChart: string;
163
+ gaugeChart: string;
164
+ funnelChart: string;
165
+ heatmapChart: string;
166
+ stickyNote: string;
167
+ clockCalendar: string;
168
+ weather: string;
169
+ shortcut: string;
170
+ kpiProgress: string;
171
+ kpiSegmented: string;
172
+ kpiDetails: string;
173
+ kpiStatCard: string;
174
+ };
175
+ queries: {
176
+ tenantAdmin: {
177
+ activeUsersKpi: string;
178
+ employeesKpi: string;
179
+ openTasksKpi: string;
180
+ activeProjectsKpi: string;
181
+ openHazardsKpi: string;
182
+ documentsKpi: string;
183
+ workflowDefinitionsKpi: string;
184
+ subscriptionKpi: string;
185
+ usersByRoleDonut: string;
186
+ taskStatusDonut: string;
187
+ deliveryStatusDonut: string;
188
+ integrationsDonut: string;
189
+ jobsByStatusBar: string;
190
+ jobSchedulesByStatusBar: string;
191
+ workflowsByStatusBar: string;
192
+ teamsBar: string;
193
+ projectsByStatusBar: string;
194
+ trainingComplianceGauge: string;
195
+ };
196
+ };
197
+ };
198
+ protected readonly dialogService: AXDialogService;
199
+ protected readonly popupService: AXPopupService;
200
+ protected readonly store: {
201
+ dashboards: _angular_core.Signal<AXMDashboardLayout[]>;
202
+ allDashboards: _angular_core.Signal<AXMDashboardLayout[]>;
203
+ currentDashboardId: _angular_core.Signal<string | null>;
204
+ isAdmin: _angular_core.Signal<boolean>;
205
+ userRoleIds: _angular_core.Signal<string[]>;
206
+ dashboardsOption: _ngrx_signals.DeepSignal<_acorex_components_grid_layout_builder.AXGridLayoutOptions>;
207
+ gridContainerWidth: _angular_core.Signal<number>;
208
+ isLoading: _angular_core.Signal<boolean>;
209
+ currentBreakpoint: _angular_core.Signal<_acorex_platform_module_dashboard_management_client_contracts.AXMDashboardBreakpoint>;
210
+ isBreakpointTransitioning: _angular_core.Signal<boolean>;
211
+ entityDetailLayoutLock: _angular_core.Signal<boolean>;
212
+ readonly: _angular_core.Signal<boolean>;
213
+ selectedDashboard: _angular_core.Signal<AXMDashboardLayout | null>;
214
+ isUserAdmin: _angular_core.Signal<boolean>;
215
+ availableDashboards: _angular_core.Signal<AXMDashboardLayout[]>;
216
+ currentLayoutOptions: _angular_core.Signal<_acorex_components_grid_layout_builder.AXGridLayoutOptions>;
217
+ currentWidgets: _angular_core.Signal<{
218
+ resolvedOptions: _acorex_components_grid_layout_builder.AXGridLayoutNode;
219
+ config: _acorex_platform_module_dashboard_management_client_contracts.AXMDashboardWidgetLayoutMap;
220
+ node?: _acorex_platform_framework_shared_core.AXPWidgetNode;
221
+ }[]>;
222
+ canConfigureWidget: _angular_core.Signal<(widget: AXMDashboardWidgetData) => boolean>;
223
+ isWidgetLocked: _angular_core.Signal<(widget: AXMDashboardWidgetData) => boolean>;
224
+ setCurrentDashboard: (dashboardId: string) => void;
225
+ addDashboard: () => Promise<void>;
226
+ editDashboard: () => Promise<void>;
227
+ cloneDashboard: () => Promise<void>;
228
+ updateDashboardMetadataFromEditor: (form: {
229
+ title: _acorex_platform_framework_shared_core.AXPMultiLanguageString;
230
+ description?: _acorex_platform_framework_shared_core.AXPMultiLanguageString;
231
+ roleIds: string[];
232
+ isArchived: boolean;
233
+ locked: boolean;
234
+ }) => Promise<boolean>;
235
+ addWidget: () => Promise<void>;
236
+ removeDashboard: (id: string) => Promise<void>;
237
+ removeWidget: (dashboardId: string, widgetId: string) => Promise<void>;
238
+ handleConfigChange: (dashboard: AXMDashboardLayout) => Promise<void>;
239
+ onGridChange: (event: _acorex_components_grid_layout_builder.AXGridLayoutEvent) => void;
240
+ handlePopupConfiguration: (widgetNode: _acorex_platform_framework_shared_core.AXPWidgetNode) => Promise<void>;
241
+ handleValueChanged: (widgetNode: _acorex_platform_framework_shared_core.AXPWidgetNode, data: unknown) => Promise<void>;
242
+ handleOptionsChanged: (widgetNode: _acorex_platform_framework_shared_core.AXPWidgetNode, data: unknown) => Promise<void>;
243
+ setIsAdmin: (isAdmin: boolean) => void;
244
+ updateGridContainerWidth: (width: number) => void;
245
+ setEntityDetailLayoutLock: (locked: boolean) => void;
246
+ hydrateFromEntityDetailModel: (model: _acorex_platform_module_dashboard_management_client_contracts.AXMCommonDashboardEntityModel) => void;
247
+ toggleLockDashboard: () => Promise<void>;
248
+ isDashboardLocked: () => boolean;
249
+ } & _ngrx_signals.StateSource<{
250
+ dashboards: AXMDashboardLayout[];
251
+ allDashboards: AXMDashboardLayout[];
252
+ currentDashboardId: string | null;
253
+ isAdmin: boolean;
254
+ userRoleIds: string[];
255
+ dashboardsOption: _acorex_components_grid_layout_builder.AXGridLayoutOptions;
256
+ gridContainerWidth: number;
257
+ isLoading: boolean;
258
+ currentBreakpoint: _acorex_platform_module_dashboard_management_client_contracts.AXMDashboardBreakpoint;
259
+ isBreakpointTransitioning: boolean;
260
+ entityDetailLayoutLock: boolean;
261
+ readonly: boolean;
262
+ }>;
263
+ protected readonly themeService: {
264
+ currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
265
+ currentPalette: _angular_core.Signal<string>;
266
+ systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
267
+ font: _ngrx_signals.DeepSignal<{
268
+ family: string;
269
+ size: string;
270
+ }>;
271
+ overlayLoading: _angular_core.Signal<boolean>;
272
+ navigationLoading: _angular_core.Signal<boolean>;
273
+ overlayLoadingTaskCount: _angular_core.Signal<number>;
274
+ navigationLoadingTaskCount: _angular_core.Signal<number>;
275
+ sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
276
+ overlaySideMenuOpen: _angular_core.Signal<boolean>;
277
+ sideMenuWidth: _angular_core.Signal<number>;
278
+ sideMenuCompactWidth: _angular_core.Signal<number>;
279
+ menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
280
+ menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
281
+ isPrinting: _angular_core.Signal<boolean>;
282
+ isDarkMode: _angular_core.Signal<boolean>;
283
+ isLightMode: _angular_core.Signal<boolean>;
284
+ isSystemMode: _angular_core.Signal<boolean>;
285
+ isSideMenuOpen: _angular_core.Signal<boolean>;
286
+ isOverlayLoading: _angular_core.Signal<boolean>;
287
+ overlayTaskCount: _angular_core.Signal<number>;
288
+ isNavigationLoading: _angular_core.Signal<boolean>;
289
+ isMenuHorizontal: _angular_core.Signal<boolean>;
290
+ effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
291
+ sideMenuDrawerWidth: _angular_core.Signal<number>;
292
+ changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
293
+ openSideMenu: () => void;
294
+ closeSideMenu: () => void;
295
+ setSideMenuWidth: (width: number) => void;
296
+ setSideMenuCompactWidth: (width: number) => void;
297
+ setSideMenuDrawerWidth: (width: number) => void;
298
+ toggleSideMenu: () => void;
299
+ setNavigationLoading: (value: boolean, delay?: number) => void;
300
+ setOverlayLoading: (value: boolean, delay?: number) => void;
301
+ clearOverlayLoading: () => void;
302
+ loadSettings: () => Promise<void>;
303
+ } & _ngrx_signals.StateSource<{
304
+ currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
305
+ currentPalette: string;
306
+ systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
307
+ font: {
308
+ family: string;
309
+ size: string;
310
+ };
311
+ overlayLoading: boolean;
312
+ navigationLoading: boolean;
313
+ overlayLoadingTaskCount: number;
314
+ navigationLoadingTaskCount: number;
315
+ sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
316
+ overlaySideMenuOpen: boolean;
317
+ sideMenuWidth: number;
318
+ sideMenuCompactWidth: number;
319
+ menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
320
+ menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
321
+ isPrinting: boolean;
322
+ }>;
323
+ private readonly injector;
324
+ protected readonly context: _angular_core.WritableSignal<{}>;
325
+ protected readonly skeletonListRows: number[];
326
+ protected readonly skeletonWidgets: AXMDashboardHomeSkeletonWidget[];
327
+ private dashboardsLoaded;
328
+ private readonly emptyStateCanvasContextMenu;
329
+ ngOnDestroy(): void;
330
+ protected isTenantDashboardReadOnlyForCurrentUser(): boolean;
331
+ private isAddWidgetDisabled;
332
+ private isDashboardManagementDisabled;
333
+ protected handleDashboardContextMenuOpening(e: AXContextMenuOpeningEvent): Promise<void>;
334
+ protected handleDashboardContextMenuItemClick(e: AXContextMenuItemsClickEvent): Promise<void>;
335
+ getPageTitle(): string;
336
+ getPageDescription(): Promise<string>;
337
+ protected getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]>;
338
+ getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
339
+ getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
340
+ execute(command: AXPExecuteCommand): Promise<void>;
341
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDashboardHomeComponent, never>;
342
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDashboardHomeComponent, "axm-dashboard-home", never, {}, {}, never, never, true, never>;
343
+ }
344
+
345
+ declare class AXMAddDashboardPopup extends AXBasePageComponent implements OnInit {
346
+ protected readonly scope: "dashboard-management";
347
+ private readonly data;
348
+ private readonly entityService;
349
+ private readonly jobDefinitionData;
350
+ private readonly sessionService;
351
+ private readonly multiLanguageResolver;
352
+ protected title: _angular_core.ModelSignal<string>;
353
+ protected description: _angular_core.ModelSignal<string>;
354
+ protected selectedRoleIds: _angular_core.ModelSignal<string[]>;
355
+ protected isArchived: _angular_core.ModelSignal<boolean>;
356
+ protected isLocked: _angular_core.ModelSignal<boolean>;
357
+ protected isAdmin: _angular_core.ModelSignal<boolean>;
358
+ protected showAdminFields: _angular_core.ModelSignal<boolean>;
359
+ protected roles: any[];
360
+ protected get isValid(): boolean;
361
+ /**
362
+ * Maps stored dashboard title (plain or multi-language) to a single string for this popup’s text box.
363
+ */
364
+ private titleToPlainText;
365
+ /**
366
+ * Maps stored dashboard description (plain or multi-language) to a single string for this popup’s text box.
367
+ */
368
+ private descriptionToPlainText;
369
+ ngOnInit(): Promise<void>;
370
+ protected handleClose(isCanceled?: boolean): Promise<void>;
371
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMAddDashboardPopup, never>;
372
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMAddDashboardPopup, "ng-component", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "selectedRoleIds": { "alias": "selectedRoleIds"; "required": false; "isSignal": true; }; "isArchived": { "alias": "isArchived"; "required": false; "isSignal": true; }; "isLocked": { "alias": "isLocked"; "required": false; "isSignal": true; }; "isAdmin": { "alias": "isAdmin"; "required": false; "isSignal": true; }; "showAdminFields": { "alias": "showAdminFields"; "required": false; "isSignal": true; }; }, { "title": "titleChange"; "description": "descriptionChange"; "selectedRoleIds": "selectedRoleIdsChange"; "isArchived": "isArchivedChange"; "isLocked": "isLockedChange"; "isAdmin": "isAdminChange"; "showAdminFields": "showAdminFieldsChange"; }, never, never, true, never>;
373
+ }
374
+
375
+ declare class AXMConfigurationPopup extends AXBasePageComponent implements OnInit {
376
+ widget: AXPWidgetNode;
377
+ protected readonly widgetData: _angular_core.WritableSignal<AXPWidgetNode | null>;
378
+ ngOnInit(): void;
379
+ protected handleClose(isCanceled?: boolean): Promise<void>;
380
+ protected handlePropertyChange(event: AXPWidgetPropertiesChangedEvent): void;
381
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMConfigurationPopup, never>;
382
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMConfigurationPopup, "ng-component", never, {}, {}, never, never, true, never>;
383
+ }
384
+
385
+ interface AXMDashboardLayoutDialogOptions {
386
+ /** When false, hides the roles field (e.g. home-dashboard edit). Default: admin + tenant scope. */
387
+ showRoleField?: boolean;
388
+ }
389
+ declare class AXMDashboardPopupService {
390
+ private readonly popupService;
391
+ private readonly translateService;
392
+ private readonly layoutBuilder;
393
+ private readonly entityService;
394
+ private readonly roleService;
395
+ private readonly sessionService;
396
+ generateDashboardLayout(data: Partial<AXMDashboardLayout>, isAdmin: boolean, dialogOptions?: AXMDashboardLayoutDialogOptions): Promise<AXMDashboardLayout | void>;
397
+ handlePopupConfiguration(widget: AXPWidgetNode): Promise<AXPWidgetNode | void>;
398
+ /**
399
+ * With `confirmCloseWhenDirty`, cancel resolves `show()` with an {@link AXPDialogRef}
400
+ * (action/close/context/...) instead of the `onAction` handler return value.
401
+ */
402
+ private isDialogCancelled;
403
+ private normalizeTitleForFormContext;
404
+ private normalizeTitleFromFormSubmit;
405
+ private normalizeDescriptionForFormContext;
406
+ private normalizeDescriptionFromFormSubmit;
407
+ private normalizeBooleanInput;
408
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDashboardPopupService, never>;
409
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDashboardPopupService>;
410
+ }
411
+
412
+ declare class AXMDashboardWidgetWrapperComponent {
413
+ readonly title: _angular_core.InputSignal<string | null>;
414
+ readonly hasConfiguration: _angular_core.InputSignal<boolean>;
415
+ readonly isLocked: _angular_core.InputSignal<boolean>;
416
+ readonly onDelete: _angular_core.OutputEmitterRef<void>;
417
+ readonly onConfiguration: _angular_core.OutputEmitterRef<void>;
418
+ protected readonly isDropdownOpen: _angular_core.WritableSignal<boolean>;
419
+ protected stopDashboardCanvasContextMenuBubble(event: Event): void;
420
+ protected handleOnItemClick(event: AXItemClickEvent<AXButtonItemComponent>): void;
421
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDashboardWidgetWrapperComponent, never>;
422
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDashboardWidgetWrapperComponent, "axm-dashboard-widget-wrapper", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "hasConfiguration": { "alias": "hasConfiguration"; "required": false; "isSignal": true; }; "isLocked": { "alias": "isLocked"; "required": false; "isSignal": true; }; }, { "onDelete": "onDelete"; "onConfiguration": "onConfiguration"; }, never, ["*"], true, never>;
423
+ }
424
+
425
+ /** Grid size preset as `[width, height]` in column/row units. */
426
+ type AXPDashboardDimensionPreset = readonly [width: number, height: number];
427
+ type AXPDashboardLegacyBreakpointDimensions = {
428
+ width?: number;
429
+ height?: number;
430
+ minWidth?: number;
431
+ minHeight?: number;
432
+ maxWidth?: number;
433
+ maxHeight?: number;
434
+ };
435
+ type AXPDashboardBreakpointDimensions = readonly AXPDashboardDimensionPreset[] | AXPDashboardLegacyBreakpointDimensions;
436
+ type AXPDashboardWidgetDimensions = Partial<Record<AXMDashboardBreakpoint$1, AXPDashboardBreakpointDimensions>>;
437
+ type AXPDashboardDimensionPresets = readonly AXPDashboardDimensionPreset[];
438
+ type AXPDashboardCoreDimensionPresets = {
439
+ sm: AXPDashboardDimensionPresets;
440
+ md: AXPDashboardDimensionPresets;
441
+ lg: AXPDashboardDimensionPresets;
442
+ xl?: AXPDashboardDimensionPresets;
443
+ '2xl'?: AXPDashboardDimensionPresets;
444
+ '3xl'?: AXPDashboardDimensionPresets;
445
+ '4xl'?: AXPDashboardDimensionPresets;
446
+ };
447
+ /** Builds a full breakpoint dimension map; each wide tier falls back to the next narrower tier when omitted. */
448
+ declare const defineDashboardWidgetDimensions: (presets: AXPDashboardCoreDimensionPresets) => Required<AXPDashboardWidgetDimensions>;
449
+ declare const DASHBOARD_WIDGET_GRID_WIDTH_OPTION = "gridWidth";
450
+ declare const DASHBOARD_WIDGET_GRID_HEIGHT_OPTION = "gridHeight";
451
+ declare function formatDashboardGridSizeToken(width?: number, height?: number): string | null;
452
+ declare function readDashboardGridSizeToken(options: Record<string, unknown>): string | null;
453
+ /** Merges current grid cell width/height into widget options for discrete layout variants. */
454
+ declare function withDashboardGridSizeOptions<T extends AXPOptionsData = AXPOptionsData>(options: T | undefined, layoutNode: Pick<AXGridLayoutNode, 'width' | 'height'>): T;
455
+ /** Resolves widget meta.dimensions for a breakpoint, falling back to narrower tiers. */
456
+ declare const resolveDashboardMetaDimensionsForBreakpoint: (metaDimensions: AXPDashboardWidgetDimensions | undefined, breakpoint: AXMDashboardBreakpoint$1) => AXPDashboardBreakpointDimensions | undefined;
457
+ /** Builds an initial layout node from meta.dimensions with narrower-tier fallback. */
458
+ declare const resolveDashboardMetaLayoutNode: (metaDimensions: AXPDashboardWidgetDimensions | undefined, breakpoint: AXMDashboardBreakpoint$1, fallback: AXPDashboardDimensionPreset, options?: {
459
+ forceWidth?: number;
460
+ }) => AXGridLayoutNode;
461
+ /**
462
+ * Builds a grid layout node from widget meta dimensions.
463
+ * Supports preset arrays (`[[w,h], ...]`) and legacy min/max objects.
464
+ */
465
+ declare const resolveDashboardLayoutNode: (dims: AXPDashboardBreakpointDimensions | undefined, fallback: AXPDashboardDimensionPreset, options?: {
466
+ forceWidth?: number;
467
+ }) => AXGridLayoutNode;
468
+ /**
469
+ * Enriches a persisted layout node with allowedSizes from widget meta when missing.
470
+ * Snaps stored width/height to the nearest preset when presets are available.
471
+ */
472
+ declare const enrichDashboardLayoutNode: (layoutNode: AXGridLayoutNode, breakpoint: AXMDashboardBreakpoint$1, metaDimensions: AXPDashboardWidgetDimensions | undefined) => AXGridLayoutNode;
473
+
474
+ type DashboardSeedDimensionPreset = Required<AXPDashboardWidgetDimensions>;
475
+ type DashboardSeedGridSize = readonly [width: number, height: number];
476
+ type DashboardSeedLayoutPlacement = {
477
+ x: number;
478
+ y: number;
479
+ lg: DashboardSeedGridSize;
480
+ md?: DashboardSeedGridSize;
481
+ sm?: DashboardSeedGridSize;
482
+ };
483
+ /** Builds persisted grid config + meta.dimensions from preset arrays (defineDashboardWidgetDimensions). */
484
+ declare function layoutFromDimensions(id: string, dimensions: DashboardSeedDimensionPreset, placement: DashboardSeedLayoutPlacement): {
485
+ config: {
486
+ id: string;
487
+ lg: {
488
+ id: string;
489
+ width: number;
490
+ height: number;
491
+ allowedSizes: readonly AXGridLayoutSize[];
492
+ x: number;
493
+ y: number;
494
+ };
495
+ md: {
496
+ id: string;
497
+ width: number;
498
+ height: number;
499
+ allowedSizes: readonly AXGridLayoutSize[];
500
+ };
501
+ sm: {
502
+ id: string;
503
+ width: number;
504
+ height: number;
505
+ allowedSizes: readonly AXGridLayoutSize[];
506
+ };
507
+ };
508
+ meta: {
509
+ dimensions: Required<Partial<Record<_acorex_platform_module_dashboard_management_contracts.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
510
+ };
511
+ };
512
+
513
+ type DashboardSeedWidget = AXMCommonDashboardEntityModel$1['widgets'][number];
514
+ type QueryTab = {
515
+ label: string;
516
+ query: string;
517
+ };
518
+ type ChartWidgetType = 'BarChart' | 'DonutChart' | 'LineChart' | 'GaugeChart' | 'FunnelChart' | 'HeatmapChart';
519
+ declare function buildDashboardKpiStatCard(id: string, x: number, y: number, query: string, size?: DashboardSeedGridSize, navigatePath?: string): DashboardSeedWidget;
520
+ declare function buildDashboardKpiTile(id: string, type: 'KpiProgress' | 'KpiSegmented' | 'KpiDetails', x: number, y: number, options: Record<string, unknown>, size?: DashboardSeedGridSize): DashboardSeedWidget;
521
+ declare function buildDashboardChartWidget(id: string, title: string, type: ChartWidgetType, x: number, y: number, options: Record<string, unknown>, size?: DashboardSeedGridSize): DashboardSeedWidget;
522
+ declare function buildDashboardChartWidgetWithQuery(id: string, title: string, type: 'BarChart' | 'DonutChart' | 'LineChart' | 'GaugeChart', x: number, y: number, queryOrTabs: string | QueryTab[], size?: DashboardSeedGridSize): DashboardSeedWidget;
523
+ declare function buildDashboardShortcut(id: string, x: number, y: number, title: string, icon: string, path: string, color: string, size?: DashboardSeedGridSize): DashboardSeedWidget;
524
+ declare function buildDashboardClockCalendar(id: string, x: number, y: number, options?: Record<string, unknown>, size?: DashboardSeedGridSize): DashboardSeedWidget;
525
+ declare function buildDashboardStickyNote(id: string, x: number, y: number, defaultValue: string, size?: DashboardSeedGridSize): DashboardSeedWidget;
526
+ declare function buildDashboardWeatherWidget(id: string, x: number, y: number, options: Record<string, unknown>, size?: DashboardSeedGridSize): DashboardSeedWidget;
527
+
528
+ /** Wide cartesian charts (bar, line, heatmap, donut). */
529
+ declare const AXP_CHART_WIDE_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
530
+ /** Donut chart — same allowed sizes as wide charts. */
531
+ declare const AXP_CHART_SQUARE_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
532
+ /** Gauge chart — compact radial tile. */
533
+ declare const AXP_CHART_GAUGE_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
534
+ /** Funnel chart — same allowed sizes as wide charts. */
535
+ declare const AXP_CHART_FUNNEL_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
536
+
537
+ /**
538
+ * Shared helpers for loading dashboard chart/KPI data via AXPQuery (single or tabbed).
539
+ */
540
+
541
+ interface AXPChartQueryTab {
542
+ label: string;
543
+ query: string;
544
+ /** Present when the tab/query binding has an input payload; otherwise `undefined`. */
545
+ queryInput: Record<string, unknown> | undefined;
546
+ }
547
+
548
+ /** Reserved widgets-container key for runtime entity detail context (entity dashboard plugin). */
549
+ declare const AXPDASHBOARD_ENTITY_CONTEXT_KEY = "__dashboardEntityContext";
550
+ /** Content-box size of the widget host element (from ResizeObserver). */
551
+ interface AXPDashboardWidgetContainerSize {
552
+ width: number;
553
+ height: number;
554
+ }
555
+ /** Runtime entity record context passed to dashboard widgets on entity detail views. */
556
+ interface AXPDashboardEntityContext {
557
+ entityType: string;
558
+ entityId: string;
559
+ /** Full entity record from the detail view (rootContext). */
560
+ data: Record<string, unknown>;
561
+ }
562
+ /**
563
+ * Merges a persisted dashboard model with optional runtime entity context for widget rendering.
564
+ */
565
+ declare function buildDashboardWidgetsContext(dashboardModel: Record<string, unknown>, entityContext?: AXPDashboardEntityContext): Record<string, unknown>;
566
+ /**
567
+ * Reads {@link AXPDashboardEntityContext} from a widgets-container context object.
568
+ */
569
+ declare function readDashboardEntityContext(context: unknown): AXPDashboardEntityContext | undefined;
570
+ /**
571
+ * Base class for dashboard widgets ({@link AXPBaseWidgetComponent}).
572
+ * Extend this to add shared dashboard logic and helpers.
573
+ */
574
+ declare abstract class AXPDashboardWidgetComponent<TOptions extends Record<string, unknown> = AXPOptionsData> extends AXPBaseWidgetComponent<TOptions> {
575
+ /**
576
+ * Runtime entity detail context when the dashboard is shown on an entity record (dashboard plugin).
577
+ * Undefined on home/tenant dashboards.
578
+ */
579
+ protected readonly entityContext: _angular_core.Signal<AXPDashboardEntityContext | undefined>;
580
+ /** True when {@link entityContext} is available for dynamic, record-scoped widget data. */
581
+ protected hasEntityContext(): boolean;
582
+ /**
583
+ * Current dashboard grid cell size as `WxH` (e.g. `2x2`).
584
+ * Provided by {@link AxmDashboardWidgetGridSizeDirective} on the dashboard grid host.
585
+ */
586
+ private readonly dashboardGridSize;
587
+ protected readonly gridSizeToken: _angular_core.Signal<string | null>;
588
+ private readonly containerResizeRawSubject;
589
+ private readonly containerSizeSubject;
590
+ /**
591
+ * Emits the widget host content-box size whenever it changes.
592
+ * Notifications are throttled; see `AXPDASHBOARD_WIDGET_CONTAINER_RESIZE_THROTTLE_MS`.
593
+ */
594
+ protected readonly containerSize$: Observable<AXPDashboardWidgetContainerSize>;
595
+ constructor();
596
+ /**
597
+ * Called when the widget host content box is resized.
598
+ * Override for imperative updates; use {@link containerSize$} for reactive pipelines.
599
+ */
600
+ protected onContainerSizeChanged(_size: AXPDashboardWidgetContainerSize): void;
601
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDashboardWidgetComponent<any>, never>;
602
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDashboardWidgetComponent<any>>;
603
+ }
604
+
605
+ /**
606
+ * Bar Chart Widget Component
607
+ * Renders data as vertical bars with interactive hover effects and animations
608
+ */
609
+ declare class AXPBarChartWidgetViewComponent extends AXPDashboardWidgetComponent {
610
+ private readonly queryExecutor;
611
+ private readonly translationService;
612
+ protected data: _angular_core.WritableSignal<AXBarChartData[]>;
613
+ /** Options for the chart with localized title and axis labels. */
614
+ protected barChartOptions: _angular_core.WritableSignal<AXBarChartOption & {
615
+ title: string;
616
+ }>;
617
+ protected readonly legendOptions: _acorex_charts_chart_legend.AXChartLegendOptions;
618
+ private labelResolveGeneration;
619
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
620
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
621
+ private readonly activeQuery;
622
+ protected selectQueryTab(index: number): void;
623
+ private resolveChartOptionLabel;
624
+ /**
625
+ * Resolves bar category labels from plain text, @i18n keys, or multi-language maps.
626
+ */
627
+ private resolveLocalizedChartText;
628
+ private readonly resolveChartLabelKeysEffect;
629
+ private readonly clampTabIndexEffect;
630
+ private readonly dataLoadEffect;
631
+ constructor();
632
+ handleBarClick(_event: unknown): void;
633
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPBarChartWidgetViewComponent, never>;
634
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPBarChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
635
+ }
636
+
637
+ declare const AXPBarChartWidget: AXPWidgetConfig;
638
+
639
+ /**
640
+ * Donut Chart Widget Component
641
+ * Displays data in a circular donut chart with interactive segments
642
+ */
643
+ declare class AXPDonutChartWidgetViewComponent extends AXPDashboardWidgetComponent {
644
+ private readonly queryExecutor;
645
+ private readonly translationService;
646
+ protected data: _angular_core.WritableSignal<AXDonutChartData[]>;
647
+ protected donutChartOptions: _angular_core.WritableSignal<AXDonutChartOption & {
648
+ title: string;
649
+ }>;
650
+ protected readonly legendOptions: _acorex_charts_chart_legend.AXChartLegendOptions;
651
+ private labelResolveGeneration;
652
+ private resolveChartOptionLabel;
653
+ /**
654
+ * Resolves segment labels from plain text, @i18n keys, or multi-language maps.
655
+ */
656
+ private resolveLocalizedChartText;
657
+ private readonly resolveDonutOptionsEffect;
658
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
659
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
660
+ private readonly activeQuery;
661
+ protected selectQueryTab(index: number): void;
662
+ private readonly clampTabIndexEffect;
663
+ private readonly dataLoadEffect;
664
+ constructor();
665
+ handleDonutChartSegmentClick(_event: unknown): void;
666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDonutChartWidgetViewComponent, never>;
667
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDonutChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
668
+ }
669
+
670
+ declare const AXPDonutChartWidget: AXPWidgetConfig;
671
+
672
+ /**
673
+ * Funnel Chart Widget Component
674
+ * Displays step-wise conversion/flow data as a funnel.
675
+ */
676
+ declare class AXPFunnelChartWidgetViewComponent extends AXPDashboardWidgetComponent {
677
+ private readonly queryExecutor;
678
+ private readonly translationService;
679
+ protected data: _angular_core.WritableSignal<AXFunnelData[]>;
680
+ /** Options passed to the chart with resolved messages/labels (multi-language and @i18n keys). */
681
+ protected funnelOptions: _angular_core.WritableSignal<AXFunnelChartOption>;
682
+ private labelResolveGeneration;
683
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
684
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
685
+ private readonly activeQuery;
686
+ protected selectQueryTab(index: number): void;
687
+ private resolveChartText;
688
+ private readonly resolveOptionLabelsEffect;
689
+ private readonly clampTabIndexEffect;
690
+ private readonly dataLoadEffect;
691
+ constructor();
692
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFunnelChartWidgetViewComponent, never>;
693
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFunnelChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
694
+ }
695
+
696
+ declare const AXPFunnelChartWidget: AXPWidgetConfig;
697
+
698
+ /**
699
+ * Gauge Chart Widget Component
700
+ * Renders a semi-circular gauge chart with animated needle and thresholds
701
+ */
702
+ declare class AXPGaugeChartWidgetViewComponent extends AXPDashboardWidgetComponent {
703
+ private readonly queryExecutor;
704
+ private readonly translationService;
705
+ protected value: _angular_core.WritableSignal<number>;
706
+ /** Options with resolved title, label, and threshold labels for the chart SVG/layer. */
707
+ protected gaugeChartOptions: _angular_core.WritableSignal<AXGaugeChartOption & {
708
+ title?: string;
709
+ }>;
710
+ private labelResolveGeneration;
711
+ private resolveChartOptionLabel;
712
+ private readonly resolveGaugeOptionsEffect;
713
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
714
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
715
+ private readonly activeQuery;
716
+ protected selectQueryTab(index: number): void;
717
+ private readonly clampTabIndexEffect;
718
+ private readonly dataLoadEffect;
719
+ constructor();
720
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPGaugeChartWidgetViewComponent, never>;
721
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPGaugeChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
722
+ }
723
+
724
+ declare const AXPGaugeChartWidget: AXPWidgetConfig;
725
+
726
+ /**
727
+ * Heatmap Chart Widget Component
728
+ * Displays matrix-like data with color intensity based on value.
729
+ */
730
+ declare class AXPHeatmapChartWidgetViewComponent extends AXPDashboardWidgetComponent {
731
+ private readonly queryExecutor;
732
+ private readonly translationService;
733
+ protected data: _angular_core.WritableSignal<AXHeatmapData[]>;
734
+ /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */
735
+ protected heatmapOptions: _angular_core.WritableSignal<AXHeatmapChartOption>;
736
+ private labelResolveGeneration;
737
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
738
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
739
+ private readonly activeQuery;
740
+ protected selectQueryTab(index: number): void;
741
+ private resolveChartText;
742
+ private readonly resolveOptionLabelsEffect;
743
+ private readonly clampTabIndexEffect;
744
+ private readonly dataLoadEffect;
745
+ constructor();
746
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPHeatmapChartWidgetViewComponent, never>;
747
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPHeatmapChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
748
+ }
749
+
750
+ declare const AXPHeatmapChartWidget: AXPWidgetConfig;
751
+
752
+ /**
753
+ * Line Chart Widget Component
754
+ * Renders data as lines with interactive hover effects and animations
755
+ */
756
+ declare class AXPLineChartWidgetViewComponent extends AXPDashboardWidgetComponent {
757
+ private readonly queryExecutor;
758
+ private readonly translationService;
759
+ protected data: _angular_core.WritableSignal<AXLineChartData[]>;
760
+ /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */
761
+ protected lineChartOptions: _angular_core.WritableSignal<AXLineChartOption & {
762
+ title: string;
763
+ }>;
764
+ protected readonly legendOptions: _acorex_charts_chart_legend.AXChartLegendOptions;
765
+ private labelResolveGeneration;
766
+ private resolveChartOptionLabel;
767
+ /**
768
+ * Resolves series labels from plain text, @i18n keys, or multi-language maps.
769
+ */
770
+ private resolveLocalizedChartText;
771
+ private readonly resolveChartLabelKeysEffect;
772
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
773
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
774
+ private readonly activeQuery;
775
+ protected selectQueryTab(index: number): void;
776
+ private readonly clampTabIndexEffect;
777
+ private readonly dataLoadEffect;
778
+ constructor();
779
+ handleLineChartPointClick(_event: AXLineChartPointClickEvent): void;
780
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLineChartWidgetViewComponent, never>;
781
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLineChartWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
782
+ }
783
+
784
+ declare const AXPLineChartWidget: AXPWidgetConfig;
785
+
786
+ interface AXPKpiTextValueFormat {
787
+ style?: 'decimal' | 'currency' | 'percent';
788
+ currency?: string;
789
+ minimumFractionDigits?: number;
790
+ maximumFractionDigits?: number;
791
+ }
792
+ interface AXPKpiProgressData {
793
+ title?: string | AXPMultiLanguageString$1;
794
+ icon?: string;
795
+ value?: number | string;
796
+ valuePrefix?: string | AXPMultiLanguageString$1;
797
+ valueSuffix?: string | AXPMultiLanguageString$1;
798
+ subtitle?: string | AXPMultiLanguageString$1;
799
+ targetValue?: number | string;
800
+ progressValue?: number;
801
+ progressPercent?: number;
802
+ format?: AXPKpiTextValueFormat;
803
+ }
804
+ interface AXPKpiSegmentItem {
805
+ label: string | AXPMultiLanguageString$1;
806
+ value: number;
807
+ color?: string;
808
+ }
809
+ interface AXPKpiSegmentedData {
810
+ title?: string | AXPMultiLanguageString$1;
811
+ icon?: string;
812
+ segments: AXPKpiSegmentItem[];
813
+ }
814
+ interface AXPKpiDetailItem {
815
+ label: string | AXPMultiLanguageString$1;
816
+ value: string | number | AXPMultiLanguageString$1;
817
+ color?: string;
818
+ }
819
+ interface AXPKpiDetailsData {
820
+ title?: string | AXPMultiLanguageString$1;
821
+ value?: number | string;
822
+ valuePrefix?: string | AXPMultiLanguageString$1;
823
+ valueSuffix?: string | AXPMultiLanguageString$1;
824
+ subtitle?: string | AXPMultiLanguageString$1;
825
+ details: AXPKpiDetailItem[];
826
+ format?: AXPKpiTextValueFormat;
827
+ }
828
+ /** Visual tone for the title badge (e.g. LIVE, NEW). */
829
+ type AXPKpiTitleBadgeTone = 'primary' | 'secondary' | 'warning' | 'info' | 'neutral';
830
+ /** Pastel container / icon color family for the corner icon. */
831
+ type AXPKpiIconTone = 'primary' | 'secondary' | 'success' | 'warning' | 'info' | 'danger';
832
+ type AXPKpiTrendStatus = 'success' | 'danger' | 'neutral';
833
+ interface AXPKpiTitleBadge {
834
+ text?: string | AXPMultiLanguageString$1;
835
+ tone?: AXPKpiTitleBadgeTone;
836
+ }
837
+ /**
838
+ * Single-metric card: title, optional live badge, icon, main value, trend chip + label.
839
+ * Supports static options and optional query result merge into the model.
840
+ */
841
+ interface AXPKpiStatCardData {
842
+ title?: string | AXPMultiLanguageString$1;
843
+ /** Shown next to the title (e.g. LIVE). */
844
+ titleBadgeText?: string | AXPMultiLanguageString$1;
845
+ titleBadgeTone?: AXPKpiTitleBadgeTone;
846
+ /** Alternative to flat fields; merged from API payloads. */
847
+ titleBadge?: AXPKpiTitleBadge;
848
+ value?: number | string;
849
+ valuePrefix?: string | AXPMultiLanguageString$1;
850
+ valueSuffix?: string | AXPMultiLanguageString$1;
851
+ format?: AXPKpiTextValueFormat;
852
+ /** Font Awesome classes, e.g. `fa-light fa-paper-plane`. */
853
+ icon?: string;
854
+ iconTone?: AXPKpiIconTone;
855
+ /** e.g. `+2.7%` or preformatted. */
856
+ trendValue?: string | AXPMultiLanguageString$1;
857
+ trendLabel?: string | AXPMultiLanguageString$1;
858
+ trendStatus?: AXPKpiTrendStatus;
859
+ }
860
+
861
+ type AXPShortcutLayoutVariant = 'compact' | 'standard' | 'wide' | 'hero' | 'mobile';
862
+ type AXPShortcutBackgroundStyle = 'gradient' | 'pattern' | 'illustrative';
863
+ interface AXPShortcutAccentTheme {
864
+ accent: string;
865
+ hue: number;
866
+ background: string;
867
+ backgroundStyle: AXPShortcutBackgroundStyle;
868
+ }
869
+
870
+ type AXPKpiQueryLoadState = 'idle' | 'loading' | 'ready' | 'error';
871
+ declare function hasKpiQueryConfigured(opts: Record<string, unknown>): boolean;
872
+ declare function loadKpiQueryResult<T>(queryExecutor: AXPQueryExecutor, queryKey: string, queryInput: Record<string, unknown> | undefined): Promise<T | undefined>;
873
+ declare function resolveKpiText(translationService: AXTranslationService, value: unknown): Promise<string>;
874
+ declare function formatKpiValue(formatService: AXFormatService, value: unknown, format?: AXPKpiTextValueFormat): string;
875
+ declare function normalizeKpiPercent(value: number): number;
876
+ /** Maps progress percent to a bar tone for visual feedback. */
877
+ declare function resolveKpiProgressBarTone(percent: number): 'success' | 'primary' | 'warning' | 'danger';
878
+ /** Accent gradient + color for KPI icon tones (shortcut-widget visual language). */
879
+ declare function resolveKpiIconToneTheme(tone: AXPKpiIconTone): AXPShortcutAccentTheme;
880
+ /** KPI value color — same hue as the icon accent (avoids theme semantic tokens diverging from icon tone). */
881
+ declare function resolveKpiIconToneValueColor(tone: AXPKpiIconTone): string;
882
+ declare function resolveKpiSegmentPaletteColor(index: number): string;
883
+
884
+ /** KpiStatCard — compact stat + trend. */
885
+ declare const AXP_KPI_STAT_CARD_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
886
+ /** KpiProgress & KpiSegmented — single fixed tile size. */
887
+ declare const AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
888
+ /** @deprecated Prefer {@link AXP_KPI_STAT_CARD_DIMENSIONS} or {@link AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS}. */
889
+ declare const AXP_KPI_STANDARD_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
890
+ /** KpiDetails — value + detail rows. */
891
+ declare const AXP_KPI_DETAILS_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
892
+
893
+ declare class AXPKpiProgressWidgetViewComponent extends AXPDashboardWidgetComponent {
894
+ private readonly queryExecutor;
895
+ private readonly translationService;
896
+ private readonly formatService;
897
+ protected readonly model: _angular_core.WritableSignal<AXPKpiProgressData>;
898
+ protected readonly localized: _angular_core.WritableSignal<{
899
+ title: string;
900
+ valuePrefix: string;
901
+ valueSuffix: string;
902
+ subtitle: string;
903
+ targetValue: string;
904
+ }>;
905
+ protected readonly queryLoadState: _angular_core.WritableSignal<AXPKpiQueryLoadState>;
906
+ protected readonly progressPercent: _angular_core.Signal<number>;
907
+ protected readonly progressBarTone: _angular_core.Signal<"primary" | "warning" | "success" | "danger">;
908
+ protected readonly progressBarFillClasses: _angular_core.Signal<{
909
+ [x: string]: boolean;
910
+ 'axp-kpi-progress__bar-fill': boolean;
911
+ }>;
912
+ protected readonly formattedValue: _angular_core.Signal<string>;
913
+ protected readonly formattedProgressPercent: _angular_core.Signal<string>;
914
+ protected readonly showQueryLoading: _angular_core.Signal<boolean>;
915
+ protected readonly showQueryError: _angular_core.Signal<boolean>;
916
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
917
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
918
+ private readonly activeQuery;
919
+ protected selectQueryTab(index: number): void;
920
+ private readonly optionsEffect;
921
+ private readonly localizationEffect;
922
+ private readonly clampTabIndexEffect;
923
+ private readonly dataLoadEffect;
924
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPKpiProgressWidgetViewComponent, never>;
925
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPKpiProgressWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
926
+ }
927
+
928
+ declare const AXPKpiProgressWidget: AXPWidgetConfig;
929
+
930
+ interface AXPKpiSegmentViewItem {
931
+ label: string;
932
+ value: number;
933
+ color: string;
934
+ percent: number;
935
+ }
936
+ declare class AXPKpiSegmentedWidgetViewComponent extends AXPDashboardWidgetComponent {
937
+ private readonly queryExecutor;
938
+ private readonly translationService;
939
+ protected readonly model: _angular_core.WritableSignal<AXPKpiSegmentedData>;
940
+ protected readonly title: _angular_core.WritableSignal<string>;
941
+ protected readonly segments: _angular_core.WritableSignal<AXPKpiSegmentViewItem[]>;
942
+ protected readonly queryLoadState: _angular_core.WritableSignal<AXPKpiQueryLoadState>;
943
+ protected readonly hasSegments: _angular_core.Signal<boolean>;
944
+ protected readonly segmentTotal: _angular_core.Signal<number>;
945
+ protected readonly showQueryLoading: _angular_core.Signal<boolean>;
946
+ protected readonly showQueryError: _angular_core.Signal<boolean>;
947
+ protected readonly showEmptyState: _angular_core.Signal<boolean>;
948
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
949
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
950
+ private readonly activeQuery;
951
+ protected selectQueryTab(index: number): void;
952
+ private readonly optionsEffect;
953
+ private readonly transformEffect;
954
+ private readonly clampTabIndexEffect;
955
+ private readonly dataLoadEffect;
956
+ protected trackByLabel(_: number, item: AXPKpiSegmentViewItem): string;
957
+ private resolveSegments;
958
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPKpiSegmentedWidgetViewComponent, never>;
959
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPKpiSegmentedWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
960
+ }
961
+
962
+ declare const AXPKpiSegmentedWidget: AXPWidgetConfig;
963
+
964
+ interface AXPKpiDetailViewItem {
965
+ label: string;
966
+ value: string;
967
+ color?: string;
968
+ }
969
+ declare class AXPKpiDetailsWidgetViewComponent extends AXPDashboardWidgetComponent {
970
+ private readonly queryExecutor;
971
+ private readonly translationService;
972
+ private readonly formatService;
973
+ protected readonly model: _angular_core.WritableSignal<AXPKpiDetailsData>;
974
+ protected readonly localized: _angular_core.WritableSignal<{
975
+ title: string;
976
+ subtitle: string;
977
+ valuePrefix: string;
978
+ valueSuffix: string;
979
+ }>;
980
+ protected readonly detailItems: _angular_core.WritableSignal<AXPKpiDetailViewItem[]>;
981
+ protected readonly queryLoadState: _angular_core.WritableSignal<AXPKpiQueryLoadState>;
982
+ protected readonly formattedValue: _angular_core.Signal<string>;
983
+ protected readonly hasDetails: _angular_core.Signal<boolean>;
984
+ protected readonly showQueryLoading: _angular_core.Signal<boolean>;
985
+ protected readonly showQueryError: _angular_core.Signal<boolean>;
986
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
987
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
988
+ private readonly activeQuery;
989
+ protected selectQueryTab(index: number): void;
990
+ private readonly optionsEffect;
991
+ private readonly localizationEffect;
992
+ private readonly clampTabIndexEffect;
993
+ private readonly dataLoadEffect;
994
+ protected trackByLabel(_: number, item: AXPKpiDetailViewItem): string;
995
+ private resolveDetails;
996
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPKpiDetailsWidgetViewComponent, never>;
997
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPKpiDetailsWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
998
+ }
999
+
1000
+ declare const AXPKpiDetailsWidget: AXPWidgetConfig;
1001
+
1002
+ declare const AXPKpiStatCardWidget: AXPWidgetConfig;
1003
+
1004
+ declare class AXPKpiStatCardWidgetViewComponent extends AXPDashboardWidgetComponent {
1005
+ private readonly queryExecutor;
1006
+ private readonly translationService;
1007
+ private readonly formatService;
1008
+ private readonly commandService;
1009
+ private readonly page;
1010
+ protected readonly model: _angular_core.WritableSignal<AXPKpiStatCardData>;
1011
+ protected readonly localized: _angular_core.WritableSignal<{
1012
+ title: string;
1013
+ valuePrefix: string;
1014
+ valueSuffix: string;
1015
+ titleBadgeText: string;
1016
+ trendValue: string;
1017
+ trendLabel: string;
1018
+ }>;
1019
+ protected readonly queryLoadState: _angular_core.WritableSignal<AXPKpiQueryLoadState>;
1020
+ protected readonly formattedValue: _angular_core.Signal<string>;
1021
+ protected readonly iconClass: _angular_core.Signal<string>;
1022
+ protected readonly iconToneTheme: _angular_core.Signal<AXPShortcutAccentTheme>;
1023
+ protected readonly accentColor: _angular_core.Signal<string>;
1024
+ protected readonly valueColor: _angular_core.Signal<string>;
1025
+ protected readonly cardBackground: _angular_core.Signal<string>;
1026
+ protected readonly cardBackgroundStyle: _angular_core.Signal<AXPShortcutBackgroundStyle>;
1027
+ protected readonly titleBadgeClasses: _angular_core.Signal<{
1028
+ 'axp-kpi-stat-card__title-badge': boolean;
1029
+ 'axp-kpi-stat-card__title-badge--primary': boolean;
1030
+ 'axp-kpi-stat-card__title-badge--secondary': boolean;
1031
+ 'axp-kpi-stat-card__title-badge--warning': boolean;
1032
+ 'axp-kpi-stat-card__title-badge--info': boolean;
1033
+ 'axp-kpi-stat-card__title-badge--neutral': boolean;
1034
+ }>;
1035
+ protected readonly trendPillClasses: _angular_core.Signal<{
1036
+ 'axp-kpi-stat-card__trend-pill': boolean;
1037
+ 'axp-kpi-stat-card__trend-pill--success': boolean;
1038
+ 'axp-kpi-stat-card__trend-pill--danger': boolean;
1039
+ 'axp-kpi-stat-card__trend-pill--neutral': boolean;
1040
+ }>;
1041
+ protected readonly showQueryLoading: _angular_core.Signal<boolean>;
1042
+ protected readonly showQueryError: _angular_core.Signal<boolean>;
1043
+ protected readonly navigatePath: _angular_core.Signal<string | undefined>;
1044
+ protected readonly isClickable: _angular_core.Signal<boolean>;
1045
+ protected readonly queryTabs: _angular_core.Signal<AXPChartQueryTab[]>;
1046
+ protected readonly activeTabIndex: _angular_core.WritableSignal<number>;
1047
+ private readonly activeQuery;
1048
+ protected selectQueryTab(index: number): void;
1049
+ private readonly optionsEffect;
1050
+ private readonly localizationEffect;
1051
+ private readonly clampTabIndexEffect;
1052
+ private readonly dataLoadEffect;
1053
+ protected handleClick(): void;
1054
+ private executeNavigate;
1055
+ private applyPatch;
1056
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPKpiStatCardWidgetViewComponent, never>;
1057
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPKpiStatCardWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
1058
+ }
1059
+
1060
+ /** Sticky note tile. */
1061
+ declare const AXP_UTILITY_COMPACT_SQUARE_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
1062
+ /** Shortcut launcher tile. */
1063
+ declare const AXP_UTILITY_SHORTCUT_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
1064
+ /** Weather tile. */
1065
+ declare const AXP_UTILITY_WEATHER_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
1066
+ /** Clock + calendar combo tile. */
1067
+ declare const AXP_UTILITY_CLOCK_CALENDAR_DIMENSIONS: Required<Partial<Record<dist_libs_modules_dashboard_management_contracts_src.AXMDashboardBreakpoint, _acorex_platform_module_dashboard_management_client.AXPDashboardBreakpointDimensions>>>;
1068
+
1069
+ declare class AXPClockCalendarWidgetViewComponent extends AXPDashboardWidgetComponent implements OnInit, OnDestroy {
1070
+ private readonly cdr;
1071
+ private readonly settingsService;
1072
+ private readonly destroyRef;
1073
+ protected currentTime: Date;
1074
+ protected currentDate: Date;
1075
+ private clockSubscription;
1076
+ protected readonly dateFormat: _angular_core.WritableSignal<string>;
1077
+ protected readonly timeFormat: _angular_core.WritableSignal<string>;
1078
+ protected readonly weekdayFormat: _angular_core.WritableSignal<string>;
1079
+ /** Tenant regional TimeZone setting (IANA) — used when widget option is empty. */
1080
+ private readonly tenantTimeZone;
1081
+ /** Widget option (timezone entity code) or tenant regional TimeZone. */
1082
+ protected readonly ianaTimeZone: Signal<string>;
1083
+ protected readonly showSeconds: Signal<boolean>;
1084
+ protected readonly utcOffsetMinutes: Signal<number | null>;
1085
+ protected readonly timezoneLabel: Signal<string>;
1086
+ ngOnInit(): void;
1087
+ ngOnDestroy(): void;
1088
+ protected initializeWidget(): void;
1089
+ protected updateWidget(): void;
1090
+ protected destroyWidget(): void;
1091
+ private bindRegionalSettingChanges;
1092
+ private loadRegionalFormats;
1093
+ private loadTenantTimeZone;
1094
+ private startClockTimer;
1095
+ private stopClockTimer;
1096
+ private updateTime;
1097
+ private getAdjustedTime;
1098
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPClockCalendarWidgetViewComponent, never>;
1099
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPClockCalendarWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
1100
+ }
1101
+
1102
+ /**
1103
+ * Clock & calendar dashboard widget.
1104
+ * Timezone options come from lookup on LocaleManagement.Timezones (active only).
1105
+ * When unset, the view falls back to the tenant regional TimeZone setting.
1106
+ */
1107
+ declare const AXPClockCalendarWidget: AXPWidgetConfig;
1108
+
1109
+ /**
1110
+ * ACoreX Clock Calendar Widget Types
1111
+ */
1112
+ /**
1113
+ * Hour number definition for the analog clock
1114
+ */
1115
+ interface AXPHourNumber {
1116
+ number: number;
1117
+ angle: number;
1118
+ }
1119
+ /** Current UTC offset (minutes) for an IANA zone such as `Australia/Sydney`. */
1120
+ declare function getIanaTimeZoneOffsetMinutes(timeZone: string, at?: Date): number | null;
1121
+ /** Format offset minutes as `UTC+10` / `UTC+3:30` for the widget badge. */
1122
+ declare function formatUtcOffsetLabel(offsetMinutes: number): string;
1123
+ /**
1124
+ * Normalize a timezone select / setting value to an IANA code.
1125
+ * Accepts a string code or an object with `code` / `iana` / `id`.
1126
+ */
1127
+ declare function resolveTimeZoneCode(value: unknown, fallback?: string): string;
1128
+
1129
+ interface AXPShortcutItem {
1130
+ name: string;
1131
+ title: string | AXPMultiLanguageString$1;
1132
+ description?: string | AXPMultiLanguageString$1;
1133
+ icon: string;
1134
+ command: AXPExecuteCommand;
1135
+ }
1136
+ declare class AXPShortcutWidgetViewComponent extends AXPDashboardWidgetComponent {
1137
+ private popupService;
1138
+ private commandService;
1139
+ private page;
1140
+ private searchConfig;
1141
+ private containerWidth;
1142
+ private containerHeight;
1143
+ private shouldPromptShortcutCommand;
1144
+ private commandPromptInFlight;
1145
+ private suppressEmptyClick;
1146
+ constructor();
1147
+ protected item: _angular_core.Signal<AXPShortcutItem | undefined>;
1148
+ protected color: _angular_core.Signal<string>;
1149
+ protected colorHue: _angular_core.Signal<number | undefined>;
1150
+ protected backgroundStyle: _angular_core.Signal<AXPShortcutBackgroundStyle | undefined>;
1151
+ protected layoutVariant: _angular_core.Signal<AXPShortcutLayoutVariant>;
1152
+ protected theme: _angular_core.Signal<AXPShortcutAccentTheme>;
1153
+ protected accentColor: _angular_core.Signal<string>;
1154
+ protected cardBackground: _angular_core.Signal<string>;
1155
+ protected cardBackgroundStyle: _angular_core.Signal<AXPShortcutBackgroundStyle>;
1156
+ protected isHero: _angular_core.Signal<boolean>;
1157
+ protected isMobile: _angular_core.Signal<boolean>;
1158
+ protected showDescription: _angular_core.Signal<boolean>;
1159
+ private readonly syncColorHue;
1160
+ ngOnInit(): void;
1161
+ onAdded(): void;
1162
+ private promptShortcutCommand;
1163
+ private clearAddedMeta;
1164
+ protected onContainerSizeChanged(size: AXPDashboardWidgetContainerSize): void;
1165
+ protected handleClick(): void;
1166
+ protected executeCommand(): Promise<void>;
1167
+ protected setCommand(): Promise<void>;
1168
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPShortcutWidgetViewComponent, never>;
1169
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPShortcutWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
1170
+ }
1171
+
1172
+ declare const AXPShortcutWidget: AXPWidgetConfig;
1173
+
1174
+ declare class AXPStickyNoteWidgetViewComponent extends AXPDashboardWidgetComponent {
1175
+ private readonly elementRef;
1176
+ protected readonly isEditing: _angular_core.WritableSignal<boolean>;
1177
+ protected readonly draftText: _angular_core.WritableSignal<string>;
1178
+ protected readonly draftBackgroundColor: _angular_core.WritableSignal<string | null>;
1179
+ protected readonly containerWidth: _angular_core.WritableSignal<number>;
1180
+ protected readonly containerHeight: _angular_core.WritableSignal<number>;
1181
+ private readonly noteEditor;
1182
+ constructor();
1183
+ protected readonly colorPresets: readonly string[];
1184
+ protected readonly persistedNoteText: _angular_core.Signal<string>;
1185
+ protected readonly backgroundColor: _angular_core.Signal<string>;
1186
+ protected readonly textColor: _angular_core.Signal<string>;
1187
+ protected readonly mutedTextColor: _angular_core.Signal<string>;
1188
+ protected readonly isEmpty: _angular_core.Signal<boolean>;
1189
+ protected readonly layoutVariant: _angular_core.Signal<_acorex_platform_module_dashboard_management_client.AXPStickyNoteLayoutVariant>;
1190
+ protected readonly showEmptyHint: _angular_core.Signal<boolean>;
1191
+ protected handleClickOutside(event: MouseEvent): void;
1192
+ protected handleDocumentKeydown(event: KeyboardEvent): void;
1193
+ protected activateEdit(): void;
1194
+ protected handleDraftChange(event: AXValueChangedEvent<string>): void;
1195
+ protected setColor(color: string, event: MouseEvent): void;
1196
+ protected onContainerSizeChanged(size: AXPDashboardWidgetContainerSize): void;
1197
+ private saveChanges;
1198
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStickyNoteWidgetViewComponent, never>;
1199
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStickyNoteWidgetViewComponent, "ng-component", never, {}, {}, never, never, true, never>;
1200
+ }
1201
+
1202
+ declare const AXPStickyNoteWidget: AXPWidgetConfig;
1203
+
1204
+ type AXPStickyNoteLayoutVariant = 'mini' | 'standard';
1205
+ declare const STICKY_NOTE_DEFAULT_BACKGROUND = "#FFF8B8";
1206
+ /** Curated palette — kept short for small widget tiles. */
1207
+ declare const STICKY_NOTE_COLOR_PRESETS: readonly string[];
1208
+ /** Reads persisted note text from widget options, with legacy `defaultValue` fallback. */
1209
+ declare function resolveStickyNoteText(options: Record<string, unknown> | undefined, legacyDefaultValue?: unknown): string;
1210
+ /** Converts legacy rich-text note content into plain text for the textarea. */
1211
+ declare function stripHtmlToPlainText(value: string): string;
1212
+ declare function isStickyNoteEmpty(value: string | null | undefined): boolean;
1213
+ declare function resolveStickyNoteBackgroundColor(color: unknown): string;
1214
+ /** Picks a readable ink color for the note body based on background luminance. */
1215
+ declare function resolveStickyNoteTextColor(backgroundColor: string): string;
1216
+ declare function resolveStickyNoteMutedTextColor(backgroundColor: string): string;
1217
+ /** Dashboard tiles are usually small — default to the tighter layout. */
1218
+ declare function resolveStickyNoteLayoutVariant(width: number, height: number): AXPStickyNoteLayoutVariant;
1219
+ declare function shouldShowStickyNoteEmptyHint(height: number): boolean;
1220
+
1221
+ declare const AXP_WIDGETS_CHART_CATEGORY: AXPDefinitionCategory;
1222
+ declare const AXP_WIDGETS_UTILITY_CATEGORY: AXPDefinitionCategory;
1223
+
1224
+ declare const AXP_DASHBOARD_SHARED_SUB_CHART_KPI: AXPDefinitionCategory;
1225
+ declare const AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN: AXPDefinitionCategory;
1226
+ declare const AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL: AXPDefinitionCategory;
1227
+ declare const AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED: AXPDefinitionCategory;
1228
+ declare const AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT: AXPDefinitionCategory;
1229
+ declare const AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME: AXPDefinitionCategory;
1230
+ declare const AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER: AXPDefinitionCategory;
1231
+ declare const AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES: AXPDefinitionCategory;
1232
+
1233
+ export { AXMAddDashboardPopup, AXMConfigurationPopup, AXMDashboardHomeComponent, AXMDashboardManagementModule, AXMDashboardPopupService, AXMDashboardStore, AXMDashboardWidgetWrapperComponent, AXPBarChartWidget, AXPBarChartWidgetViewComponent, AXPClockCalendarWidget, AXPClockCalendarWidgetViewComponent, AXPDASHBOARD_ENTITY_CONTEXT_KEY, AXPDashboardWidgetComponent, AXPDonutChartWidget, AXPDonutChartWidgetViewComponent, AXPFunnelChartWidget, AXPFunnelChartWidgetViewComponent, AXPGaugeChartWidget, AXPGaugeChartWidgetViewComponent, AXPHeatmapChartWidget, AXPHeatmapChartWidgetViewComponent, AXPKpiDetailsWidget, AXPKpiDetailsWidgetViewComponent, AXPKpiProgressWidget, AXPKpiProgressWidgetViewComponent, AXPKpiSegmentedWidget, AXPKpiSegmentedWidgetViewComponent, AXPKpiStatCardWidget, AXPKpiStatCardWidgetViewComponent, AXPLineChartWidget, AXPLineChartWidgetViewComponent, AXPShortcutWidget, AXPShortcutWidgetViewComponent, AXPStickyNoteWidget, AXPStickyNoteWidgetViewComponent, AXP_CHART_FUNNEL_DIMENSIONS, AXP_CHART_GAUGE_DIMENSIONS, AXP_CHART_SQUARE_DIMENSIONS, AXP_CHART_WIDE_DIMENSIONS, AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN, AXP_DASHBOARD_SHARED_SUB_CHART_KPI, AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL, AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED, AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES, AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT, AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME, AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER, AXP_KPI_DETAILS_DIMENSIONS, DASHBOARD_WIDGET_GRID_HEIGHT_OPTION as AXP_KPI_GRID_HEIGHT_OPTION, DASHBOARD_WIDGET_GRID_WIDTH_OPTION as AXP_KPI_GRID_WIDTH_OPTION, AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS, AXP_KPI_STANDARD_DIMENSIONS, AXP_KPI_STAT_CARD_DIMENSIONS, AXP_UTILITY_CLOCK_CALENDAR_DIMENSIONS, AXP_UTILITY_COMPACT_SQUARE_DIMENSIONS, AXP_UTILITY_SHORTCUT_DIMENSIONS, AXP_UTILITY_WEATHER_DIMENSIONS, AXP_WIDGETS_CHART_CATEGORY, AXP_WIDGETS_UTILITY_CATEGORY, DASHBOARD_WIDGET_GRID_HEIGHT_OPTION, DASHBOARD_WIDGET_GRID_WIDTH_OPTION, STICKY_NOTE_COLOR_PRESETS, STICKY_NOTE_DEFAULT_BACKGROUND, buildDashboardChartWidget, buildDashboardChartWidgetWithQuery, buildDashboardClockCalendar, buildDashboardKpiStatCard, buildDashboardKpiTile, buildDashboardShortcut, buildDashboardStickyNote, buildDashboardWeatherWidget, buildDashboardWidgetsContext, defineDashboardWidgetDimensions, enrichDashboardLayoutNode, formatDashboardGridSizeToken, formatDashboardGridSizeToken as formatKpiGridSizeToken, formatKpiValue, formatUtcOffsetLabel, getIanaTimeZoneOffsetMinutes, hasKpiQueryConfigured, isStickyNoteEmpty, layoutFromDimensions, loadKpiQueryResult, normalizeKpiPercent, readDashboardEntityContext, readDashboardGridSizeToken, readDashboardGridSizeToken as readKpiGridSizeToken, resolveDashboardLayoutNode, resolveDashboardMetaDimensionsForBreakpoint, resolveDashboardMetaLayoutNode, resolveKpiIconToneTheme, resolveKpiIconToneValueColor, resolveKpiProgressBarTone, resolveKpiSegmentPaletteColor, resolveKpiText, resolveStickyNoteBackgroundColor, resolveStickyNoteLayoutVariant, resolveStickyNoteMutedTextColor, resolveStickyNoteText, resolveStickyNoteTextColor, resolveTimeZoneCode, shouldShowStickyNoteEmptyHint, stripHtmlToPlainText, withDashboardGridSizeOptions };
1234
+ export type { AXMDashboardLayoutDialogOptions, AXPDashboardBreakpointDimensions, AXPDashboardCoreDimensionPresets, AXPDashboardDimensionPreset, AXPDashboardDimensionPresets, AXPDashboardEntityContext, AXPDashboardLegacyBreakpointDimensions, AXPDashboardWidgetContainerSize, AXPDashboardWidgetDimensions, AXPHourNumber, AXPKpiDetailItem, AXPKpiDetailsData, AXPKpiIconTone, AXPKpiProgressData, AXPKpiQueryLoadState, AXPKpiSegmentItem, AXPKpiSegmentedData, AXPKpiStatCardData, AXPKpiTextValueFormat, AXPKpiTitleBadge, AXPKpiTitleBadgeTone, AXPKpiTrendStatus, AXPShortcutItem, AXPStickyNoteLayoutVariant, DashboardSeedDimensionPreset, DashboardSeedGridSize, DashboardSeedLayoutPlacement, DashboardSeedWidget };