@acorex/platform 20.6.0-next.8 → 21.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.d.ts +91 -12
- package/common/index.d.ts +615 -44
- package/core/index.d.ts +718 -422
- package/fesm2022/acorex-platform-auth.mjs +152 -39
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +1009 -112
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +887 -408
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +99 -11
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +555 -492
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +2446 -2733
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +9 -9
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +9708 -4721
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +32 -26
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +252 -182
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs → acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs +30 -0
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-C1l2KSDa.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-D-31ej0C.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +9789 -6817
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +79 -3
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +157 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +1542 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs → acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +282 -43
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs +55 -0
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +42 -137
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +658 -45
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/index.d.ts +10 -34
- package/layout/components/index.d.ts +694 -375
- package/layout/designer/index.d.ts +4 -4
- package/layout/entity/index.d.ts +802 -183
- package/layout/views/index.d.ts +5 -58
- package/layout/widget-core/index.d.ts +63 -75
- package/layout/widgets/README.md +0 -1
- package/layout/widgets/index.d.ts +498 -129
- package/package.json +5 -5
- package/runtime/index.d.ts +36 -8
- package/themes/default/index.d.ts +44 -75
- package/themes/shared/index.d.ts +11 -49
- package/workflow/index.d.ts +401 -90
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-DGeylNSY.mjs +0 -52
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-DGeylNSY.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +0 -50
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +0 -42
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +0 -55
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +0 -50
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +0 -48
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +0 -42
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-C1l2KSDa.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-D-31ej0C.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-WbPPqDON.mjs +0 -115
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-WbPPqDON.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CD7rJIMh.mjs +0 -803
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CD7rJIMh.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +0 -1
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders,
|
|
2
|
+
import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, QueryList, OnChanges, EventEmitter, WritableSignal } from '@angular/core';
|
|
3
3
|
import * as _acorex_platform_core from '@acorex/platform/core';
|
|
4
|
-
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData,
|
|
4
|
+
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
|
|
5
5
|
import { AXPMenuItem } from '@acorex/platform/common';
|
|
6
6
|
import { AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
|
|
7
|
-
import {
|
|
7
|
+
import { AXTreeViewLegacyComponent, AXTreeItemClickBaseEventLegacy } from '@acorex/components/tree-view-legacy';
|
|
8
8
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
9
9
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
10
10
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
11
|
-
import { AXPWidgetNode,
|
|
11
|
+
import { AXPWidgetNode, AXPWidgetRendererDirective, AXPWidgetCoreContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';
|
|
12
12
|
import * as _ngrx_signals from '@ngrx/signals';
|
|
13
13
|
import { AXDataTableComponent, AXDataTableRowDbClick, AXDataTableRowClick } from '@acorex/components/data-table';
|
|
14
14
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
15
15
|
import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';
|
|
16
|
-
import { AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormDefinition } from '@acorex/platform/layout/builder';
|
|
17
16
|
import { AXTagBoxComponent } from '@acorex/components/tag-box';
|
|
18
17
|
import { AXCalendarService } from '@acorex/core/date-time';
|
|
19
18
|
import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
|
|
@@ -262,7 +261,7 @@ declare class AXPCategoryTreeComponent {
|
|
|
262
261
|
nodeDelete: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
263
262
|
searchChange: _angular_core.OutputEmitterRef<string>;
|
|
264
263
|
collapseChange: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
265
|
-
tree: _angular_core.Signal<
|
|
264
|
+
tree: _angular_core.Signal<AXTreeViewLegacyComponent | undefined>;
|
|
266
265
|
isLoading: _angular_core.WritableSignal<boolean>;
|
|
267
266
|
searchValue: _angular_core.WritableSignal<string>;
|
|
268
267
|
private loadingTimeoutId;
|
|
@@ -274,8 +273,8 @@ declare class AXPCategoryTreeComponent {
|
|
|
274
273
|
loadRootNodes(): Promise<void>;
|
|
275
274
|
loadChildNodes(parentId: string): Promise<void>;
|
|
276
275
|
searchNodes(searchValue: string): Promise<void>;
|
|
277
|
-
handleNodeClick(event:
|
|
278
|
-
handleCollapseChanged(event:
|
|
276
|
+
handleNodeClick(event: AXTreeItemClickBaseEventLegacy): Promise<void>;
|
|
277
|
+
handleCollapseChanged(event: AXTreeItemClickBaseEventLegacy): Promise<void>;
|
|
279
278
|
handleSearchChange(event: AXValueChangedEvent): Promise<void>;
|
|
280
279
|
handleCreateRootClick(event: AXClickEvent): Promise<void>;
|
|
281
280
|
handleCreateChildClick(node: AXPCategoryTreeNode, event: AXClickEvent): Promise<void>;
|
|
@@ -308,7 +307,7 @@ declare class AXPColorPalettePickerComponent {
|
|
|
308
307
|
/**
|
|
309
308
|
* Currently selected color
|
|
310
309
|
*/
|
|
311
|
-
selectedColor: _angular_core.InputSignal<string | undefined>;
|
|
310
|
+
selectedColor: _angular_core.InputSignal<string | null | undefined>;
|
|
312
311
|
/**
|
|
313
312
|
* Disable the entire palette
|
|
314
313
|
*/
|
|
@@ -318,15 +317,19 @@ declare class AXPColorPalettePickerComponent {
|
|
|
318
317
|
*/
|
|
319
318
|
readonly: _angular_core.InputSignal<boolean>;
|
|
320
319
|
/**
|
|
321
|
-
*
|
|
320
|
+
* Show empty/null option to clear selection
|
|
322
321
|
*/
|
|
323
|
-
|
|
322
|
+
allowClear: _angular_core.InputSignal<boolean>;
|
|
323
|
+
/**
|
|
324
|
+
* Emits when a color is selected or cleared (null/undefined)
|
|
325
|
+
*/
|
|
326
|
+
colorSelected: _angular_core.OutputEmitterRef<string | null | undefined>;
|
|
324
327
|
/**
|
|
325
328
|
* Handle color selection
|
|
326
329
|
*/
|
|
327
|
-
protected handleColorSelect(color: string): void;
|
|
330
|
+
protected handleColorSelect(color: string | null | undefined): void;
|
|
328
331
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPColorPalettePickerComponent, never>;
|
|
329
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPColorPalettePickerComponent, "axp-color-palette-picker", never, { "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "selectedColor": { "alias": "selectedColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "colorSelected": "colorSelected"; }, never, never, true, never>;
|
|
332
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPColorPalettePickerComponent, "axp-color-palette-picker", never, { "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "selectedColor": { "alias": "selectedColor"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "allowClear": { "alias": "allowClear"; "required": false; "isSignal": true; }; }, { "colorSelected": "colorSelected"; }, never, never, true, never>;
|
|
330
333
|
}
|
|
331
334
|
|
|
332
335
|
interface AXPColumnItemListItem {
|
|
@@ -422,6 +425,7 @@ interface AXPComponentSlotConfig {
|
|
|
422
425
|
priority?: number;
|
|
423
426
|
component?: Type<any>;
|
|
424
427
|
condition?: ((context?: AXPContextData) => (boolean | Promise<boolean>)) | string;
|
|
428
|
+
features?: string[];
|
|
425
429
|
loadComponent?: () => Type<any> | Promise<Type<any>>;
|
|
426
430
|
options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);
|
|
427
431
|
}
|
|
@@ -442,6 +446,7 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
442
446
|
private registryService;
|
|
443
447
|
private injector;
|
|
444
448
|
private evaluator;
|
|
449
|
+
private sessionService;
|
|
445
450
|
viewContainerRef: ViewContainerRef;
|
|
446
451
|
contextStore: {
|
|
447
452
|
data: _angular_core.Signal<AXPContextData>;
|
|
@@ -473,6 +478,7 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
473
478
|
isEmpty: _angular_core.Signal<boolean>;
|
|
474
479
|
private _viewCount;
|
|
475
480
|
private componentRefs;
|
|
481
|
+
private placeholderRefs;
|
|
476
482
|
constructor();
|
|
477
483
|
ngOnInit(): Promise<void>;
|
|
478
484
|
loadComponents(): Promise<void>;
|
|
@@ -516,10 +522,15 @@ interface AXPDataSelectorConfig {
|
|
|
516
522
|
dataSource: AXDataSource<any>;
|
|
517
523
|
columns: AXPDataSelectorColumn[];
|
|
518
524
|
selectionMode: 'single' | 'multiple';
|
|
519
|
-
searchFields?:
|
|
525
|
+
searchFields?: {
|
|
526
|
+
name: string;
|
|
527
|
+
title: string;
|
|
528
|
+
}[];
|
|
529
|
+
initialSearchTerm?: string;
|
|
520
530
|
parentField?: string;
|
|
521
531
|
allowCreate?: boolean;
|
|
522
532
|
filters?: AXDataSourceFilterOption;
|
|
533
|
+
selectedItemIds?: string[] | number[];
|
|
523
534
|
categoryFilter?: {
|
|
524
535
|
enabled: boolean;
|
|
525
536
|
title: string;
|
|
@@ -532,17 +543,25 @@ interface AXPDataSelectorConfig {
|
|
|
532
543
|
declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
533
544
|
protected config: _angular_core.WritableSignal<AXPDataSelectorConfig>;
|
|
534
545
|
protected searchTerm: string;
|
|
546
|
+
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
535
547
|
protected filter: AXDataSourceFilterOption;
|
|
536
548
|
protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
|
|
537
|
-
protected initialSelectedItems: any[];
|
|
538
549
|
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
550
|
+
private initialSelectionApplied;
|
|
551
|
+
private userHasInteracted;
|
|
552
|
+
private isApplyingInitialSelection;
|
|
553
|
+
private initialSelectedItems;
|
|
539
554
|
protected activeCategoryFilter: _angular_core.WritableSignal<{
|
|
540
555
|
node: AXPCategoryEntity;
|
|
541
556
|
filterValue: any;
|
|
542
557
|
} | null>;
|
|
558
|
+
private placeholderUpdateToken;
|
|
559
|
+
private initialSearchApplied;
|
|
560
|
+
private readonly translationService;
|
|
561
|
+
constructor();
|
|
543
562
|
protected allowSelect: _angular_core.Signal<boolean>;
|
|
563
|
+
protected selectedCount: _angular_core.Signal<number>;
|
|
544
564
|
protected hasSearch: _angular_core.Signal<boolean | undefined>;
|
|
545
|
-
protected searchPlaceholder: _angular_core.Signal<string>;
|
|
546
565
|
protected categoryTreeConfig: _angular_core.Signal<{
|
|
547
566
|
textField: string;
|
|
548
567
|
valueField: string;
|
|
@@ -560,7 +579,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
560
579
|
canCreateChild: boolean;
|
|
561
580
|
}>;
|
|
562
581
|
protected ngOnInit(): void;
|
|
563
|
-
protected ngAfterViewInit(): void
|
|
582
|
+
protected ngAfterViewInit(): Promise<void>;
|
|
564
583
|
protected handleRowDbClick(e: AXDataTableRowDbClick): void;
|
|
565
584
|
protected handleRowClick(e: AXDataTableRowClick): void;
|
|
566
585
|
protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
|
|
@@ -574,6 +593,12 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
574
593
|
private applySearchFilter;
|
|
575
594
|
private applyFilterAndSort;
|
|
576
595
|
private applyCategoryFilter;
|
|
596
|
+
private updateSearchPlaceholder;
|
|
597
|
+
/**
|
|
598
|
+
* Apply initial selection based on selectedItemIds from config
|
|
599
|
+
* Loads items by IDs using the data source's byKey method, then selects them in the grid
|
|
600
|
+
*/
|
|
601
|
+
private applyInitialSelection;
|
|
577
602
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
|
|
578
603
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
|
|
579
604
|
}
|
|
@@ -638,323 +663,16 @@ declare class AXPDragDropListComponent {
|
|
|
638
663
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDragDropListComponent, "axp-drag-drop-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "listId": { "alias": "listId"; "required": false; "isSignal": true; }; "dropListGroup": { "alias": "dropListGroup"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "itemClick": "itemClick"; "dropListDropped": "dropListDropped"; }, never, never, true, never>;
|
|
639
664
|
}
|
|
640
665
|
|
|
641
|
-
interface AXPDynamicFormDesignerField {
|
|
642
|
-
id: string;
|
|
643
|
-
name: string;
|
|
644
|
-
title: string;
|
|
645
|
-
description?: string;
|
|
646
|
-
widget: AXPWidgetNode;
|
|
647
|
-
mode?: 'view' | 'edit';
|
|
648
|
-
layout?: AXPGridLayoutOptions;
|
|
649
|
-
validations?: Array<{
|
|
650
|
-
rule: string;
|
|
651
|
-
options?: Record<string, any>;
|
|
652
|
-
}>;
|
|
653
|
-
}
|
|
654
|
-
interface AXPDynamicFormDesignerGroup {
|
|
655
|
-
id: string;
|
|
656
|
-
name: string;
|
|
657
|
-
title?: string;
|
|
658
|
-
description?: string;
|
|
659
|
-
fields: AXPDynamicFormDesignerField[];
|
|
660
|
-
mode?: 'view' | 'edit';
|
|
661
|
-
layout?: AXPGridLayoutOptions;
|
|
662
|
-
look?: 'fieldset' | 'card' | 'group' | 'container';
|
|
663
|
-
}
|
|
664
|
-
interface AXPDynamicFormDesignerState {
|
|
665
|
-
groups: AXPDynamicFormDesignerGroup[];
|
|
666
|
-
selectedFieldId?: string;
|
|
667
|
-
selectedGroupId?: string;
|
|
668
|
-
mode: 'designer' | 'preview';
|
|
669
|
-
}
|
|
670
|
-
/**
|
|
671
|
-
* Convert designer field to form field definition
|
|
672
|
-
*/
|
|
673
|
-
declare function convertDesignerFieldToFormField(field: AXPDynamicFormDesignerField): AXPDynamicFormFieldDefinition;
|
|
674
|
-
/**
|
|
675
|
-
* Convert designer group to form group definition
|
|
676
|
-
*/
|
|
677
|
-
declare function convertDesignerGroupToFormGroup(group: AXPDynamicFormDesignerGroup): AXPDynamicFormGroupDefinition;
|
|
678
|
-
/**
|
|
679
|
-
* Convert designer state to form definition
|
|
680
|
-
*/
|
|
681
|
-
declare function convertDesignerStateToFormDefinition(state: AXPDynamicFormDesignerState): AXPDynamicFormDefinition;
|
|
682
|
-
interface AXPFormElementWidget {
|
|
683
|
-
name: string;
|
|
684
|
-
title: string;
|
|
685
|
-
icon?: string;
|
|
686
|
-
description?: string;
|
|
687
|
-
type: string;
|
|
688
|
-
properties?: any[];
|
|
689
|
-
}
|
|
690
|
-
|
|
691
|
-
declare class AXPDynamicFormDesignerComponent {
|
|
692
|
-
formDefinition: _angular_core.ModelSignal<AXPDynamicFormDefinition>;
|
|
693
|
-
readonly: _angular_core.InputSignal<boolean>;
|
|
694
|
-
private isInternalUpdate;
|
|
695
|
-
private readonly widgetRegistry;
|
|
696
|
-
private readonly formBuilderService;
|
|
697
|
-
private readonly widgetPropertyViewerService;
|
|
698
|
-
private readonly translationService;
|
|
699
|
-
private readonly DEFAULT_GROUP_NAME;
|
|
700
|
-
protected selectedFieldId: _angular_core.WritableSignal<string | null>;
|
|
701
|
-
private designerState;
|
|
702
|
-
protected availableWidgets: _angular_core.Signal<AXPFormElementWidget[]>;
|
|
703
|
-
protected widgetOptions: _angular_core.Signal<{
|
|
704
|
-
value: string;
|
|
705
|
-
text: string;
|
|
706
|
-
}[]>;
|
|
707
|
-
protected getAllFields: _angular_core.Signal<AXPDynamicFormDesignerField[]>;
|
|
708
|
-
protected isDefaultGroup: (groupName: string) => boolean;
|
|
709
|
-
protected canDeleteGroup: _angular_core.Signal<boolean>;
|
|
710
|
-
protected designerGroups: _angular_core.Signal<AXPDynamicFormDesignerGroup[]>;
|
|
711
|
-
/**
|
|
712
|
-
* Create the default group for ungrouped fields
|
|
713
|
-
*/
|
|
714
|
-
private createDefaultGroup;
|
|
715
|
-
/**
|
|
716
|
-
* Ensure form definition has at least the default group
|
|
717
|
-
*/
|
|
718
|
-
private ensureDefaultGroup;
|
|
719
|
-
/**
|
|
720
|
-
* Effect to log form definition changes
|
|
721
|
-
*/
|
|
722
|
-
private logFormDefinitionChanges;
|
|
723
|
-
/**
|
|
724
|
-
* Effect to sync form definition model to designer state
|
|
725
|
-
*/
|
|
726
|
-
private syncModelToDesigner;
|
|
727
|
-
/**
|
|
728
|
-
* Effect to sync designer state changes back to model
|
|
729
|
-
*/
|
|
730
|
-
private syncDesignerToModel;
|
|
731
|
-
/**
|
|
732
|
-
* Get the current form definition (converted from designer state)
|
|
733
|
-
*/
|
|
734
|
-
getFormDefinition(): AXPDynamicFormDefinition;
|
|
735
|
-
/**
|
|
736
|
-
* Set the form definition (converted to designer state)
|
|
737
|
-
*/
|
|
738
|
-
setFormDefinition(definition: AXPDynamicFormDefinition): void;
|
|
739
|
-
/**
|
|
740
|
-
* Add a new field to the form
|
|
741
|
-
* @param field The field to add
|
|
742
|
-
* @param groupName Optional group name to add the field to. Defaults to the default group or first group.
|
|
743
|
-
*/
|
|
744
|
-
addField(field: AXPDynamicFormDesignerField, groupName?: string): void;
|
|
745
|
-
/**
|
|
746
|
-
* Update an existing field
|
|
747
|
-
* @param fieldId The ID of the field to update
|
|
748
|
-
* @param updates The updates to apply
|
|
749
|
-
*/
|
|
750
|
-
updateField(fieldId: string, updates: Partial<AXPDynamicFormDesignerField>): void;
|
|
751
|
-
/**
|
|
752
|
-
* Remove a field from the form
|
|
753
|
-
* @param fieldId The ID of the field to remove
|
|
754
|
-
*/
|
|
755
|
-
removeField(fieldId: string): void;
|
|
756
|
-
/**
|
|
757
|
-
* Get all available widget types
|
|
758
|
-
*/
|
|
759
|
-
getAvailableWidgets(): AXPFormElementWidget[];
|
|
760
|
-
/**
|
|
761
|
-
* Add a new group to the form
|
|
762
|
-
* @param group The group to add
|
|
763
|
-
*/
|
|
764
|
-
addGroup(group: AXPDynamicFormDesignerGroup): void;
|
|
765
|
-
/**
|
|
766
|
-
* Remove a group from the form
|
|
767
|
-
* @param groupName The name of the group to remove
|
|
768
|
-
*/
|
|
769
|
-
removeGroup(groupName: string): void;
|
|
770
|
-
/**
|
|
771
|
-
* Reorder groups in the form
|
|
772
|
-
* @param fromIndex Source index
|
|
773
|
-
* @param toIndex Target index
|
|
774
|
-
*/
|
|
775
|
-
reorderGroups(fromIndex: number, toIndex: number): void;
|
|
776
|
-
/**
|
|
777
|
-
* Update an existing group
|
|
778
|
-
* @param groupName The name of the group to update
|
|
779
|
-
* @param updates The updates to apply
|
|
780
|
-
*/
|
|
781
|
-
updateGroup(groupName: string, updates: Partial<AXPDynamicFormDesignerGroup>): void;
|
|
782
|
-
/**
|
|
783
|
-
* Move a field to a different group
|
|
784
|
-
* @param fieldName The name/path of the field to move
|
|
785
|
-
* @param targetGroupName The name of the target group
|
|
786
|
-
*/
|
|
787
|
-
moveFieldToGroup(fieldName: string, targetGroupName: string): void;
|
|
788
|
-
protected handleAddGroupClick(): Promise<void>;
|
|
789
|
-
protected handleAddFieldToGroup(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
790
|
-
protected handleFieldEdit(field: AXPDynamicFormDesignerField): Promise<void>;
|
|
791
|
-
protected handleFieldRemove(field: AXPDynamicFormDesignerField): void;
|
|
792
|
-
protected handleGroupEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
793
|
-
protected handleGroupLayoutEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
794
|
-
protected handleGroupRemove(group: AXPDynamicFormDesignerGroup): void;
|
|
795
|
-
/**
|
|
796
|
-
* Handle field layout editing
|
|
797
|
-
*/
|
|
798
|
-
protected handleFieldLayoutEdit(field: AXPDynamicFormDesignerField, group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
799
|
-
protected handleGroupDrop(event: CdkDragDrop<AXPDynamicFormDesignerGroup[]>): void;
|
|
800
|
-
protected handleFieldDrop(event: CdkDragDrop<AXPDynamicFormDesignerField[]>, targetGroupName?: string): void;
|
|
801
|
-
protected handlePreviewClick(): Promise<void>;
|
|
802
|
-
protected deriveKey(input: string): string;
|
|
803
|
-
protected generateId(): string;
|
|
804
|
-
protected getWidgetIcon(widgetName: string): string;
|
|
805
|
-
protected getWidgetTitle(widgetName: string): string;
|
|
806
|
-
protected getWidgetNode(field: AXPDynamicFormDesignerField): AXPWidgetNode;
|
|
807
|
-
protected deriveGroupKey(input: string): string;
|
|
808
|
-
protected getGroupOptions(): Array<{
|
|
809
|
-
value: string;
|
|
810
|
-
text: string;
|
|
811
|
-
}>;
|
|
812
|
-
protected addFieldToGroup(field: AXPDynamicFormDesignerField, groupName: string): void;
|
|
813
|
-
protected getAllGroupDropLists(): string[];
|
|
814
|
-
/**
|
|
815
|
-
* Get the grid column count for a group (always 12 columns)
|
|
816
|
-
*/
|
|
817
|
-
protected getGroupColumnCount(): number;
|
|
818
|
-
/**
|
|
819
|
-
* Get default field grid layout based on group configuration
|
|
820
|
-
*/
|
|
821
|
-
protected getFieldGridLayout(group: AXPDynamicFormDesignerGroup, fieldIndex?: number): AXPGridLayoutOptions;
|
|
822
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormDesignerComponent, never>;
|
|
823
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormDesignerComponent, "axp-dynamic-form-designer", never, { "formDefinition": { "alias": "formDefinition"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "formDefinition": "formDefinitionChange"; }, never, never, true, never>;
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
/**
|
|
827
|
-
* Describes a schema-only definition for an extra property (no value).
|
|
828
|
-
*/
|
|
829
|
-
interface AXPExtraPropertySchemaItem {
|
|
830
|
-
/** Unique key for the property (used as identifier) */
|
|
831
|
-
key: string;
|
|
832
|
-
/** Human-readable title/label */
|
|
833
|
-
title: string;
|
|
834
|
-
/** Widget name/id to render (e.g., 'text-editor', 'checkbox-editor') */
|
|
835
|
-
type: string;
|
|
836
|
-
/** Optional widget-specific options */
|
|
837
|
-
options?: AXPOptionsData;
|
|
838
|
-
}
|
|
839
|
-
/**
|
|
840
|
-
* Describes a single extra property row.
|
|
841
|
-
*/
|
|
842
|
-
interface AXPExtraPropertyItem extends AXPExtraPropertySchemaItem {
|
|
843
|
-
/** Current value bound to the rendered widget */
|
|
844
|
-
value: unknown;
|
|
845
|
-
}
|
|
846
|
-
/**
|
|
847
|
-
* Describes an available extra property type that user can select when adding rows.
|
|
848
|
-
*/
|
|
849
|
-
interface AXPExtraPropertyType {
|
|
850
|
-
/** Unique id for the type (it should be the same as the widget name) */
|
|
851
|
-
id: string;
|
|
852
|
-
/** UI title for selection dropdown */
|
|
853
|
-
title: string;
|
|
854
|
-
/** Default widget options applied on create */
|
|
855
|
-
defaultOptions?: AXPOptionsData;
|
|
856
|
-
}
|
|
857
|
-
/**
|
|
858
|
-
* Injection token to provide available extra property types.
|
|
859
|
-
*/
|
|
860
|
-
declare const AXP_EXTRA_PROPERTY_TYPES: InjectionToken<AXPExtraPropertyType[]>;
|
|
861
|
-
|
|
862
|
-
declare class AXPExtraPropertiesComponent {
|
|
863
|
-
items: _angular_core.InputSignal<AXPExtraPropertyItem[]>;
|
|
864
|
-
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
865
|
-
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
866
|
-
itemsChange: _angular_core.OutputEmitterRef<AXPExtraPropertyItem[]>;
|
|
867
|
-
private readonly providedTypes;
|
|
868
|
-
private readonly translationService;
|
|
869
|
-
protected newKey: WritableSignal<string>;
|
|
870
|
-
protected newTitle: WritableSignal<string>;
|
|
871
|
-
protected newTypeId: WritableSignal<string>;
|
|
872
|
-
protected newValue: WritableSignal<any>;
|
|
873
|
-
/** Local, ephemeral context for widget rendering */
|
|
874
|
-
protected internalContext: WritableSignal<Record<string, any>>;
|
|
875
|
-
private lastTypeByKey;
|
|
876
|
-
protected draftVersion: WritableSignal<number>;
|
|
877
|
-
protected draftKey: _angular_core.Signal<string>;
|
|
878
|
-
protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
879
|
-
protected presetTypes: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
880
|
-
protected canAdd: _angular_core.Signal<boolean>;
|
|
881
|
-
/** Sync incoming items' values into internal context for rendering */
|
|
882
|
-
private readonly syncContextFromItems;
|
|
883
|
-
/**
|
|
884
|
-
* Clear item values when their widget type changes to avoid incompatible stale values
|
|
885
|
-
*/
|
|
886
|
-
private readonly clearValueOnTypeChange;
|
|
887
|
-
protected handleAddItem(): void;
|
|
888
|
-
protected handleRemoveItem(key: string): void;
|
|
889
|
-
protected handleDrop(event: CdkDragDrop<AXPExtraPropertyItem[]>): void;
|
|
890
|
-
protected selectPreset(id: string): void;
|
|
891
|
-
private nodeCache;
|
|
892
|
-
private draftNodeCache?;
|
|
893
|
-
protected getNode(item: AXPExtraPropertyItem): AXPWidgetNode;
|
|
894
|
-
protected draftNode(): AXPWidgetNode;
|
|
895
|
-
protected newTypeChanged(val: string): void;
|
|
896
|
-
protected ngOnInit(): void;
|
|
897
|
-
protected handleTitleChange(val: string): void;
|
|
898
|
-
protected sanitizeKey(input: string): string;
|
|
899
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesComponent, never>;
|
|
900
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesComponent, "axp-extra-properties", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "itemsChange": "itemsChange"; }, never, never, true, never>;
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
declare class AXPExtraPropertiesSchemaComponent {
|
|
904
|
-
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
905
|
-
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
906
|
-
schemaChange: _angular_core.OutputEmitterRef<AXPExtraPropertySchemaItem[]>;
|
|
907
|
-
private readonly providedTypes;
|
|
908
|
-
private readonly translationService;
|
|
909
|
-
protected newTitle: WritableSignal<string>;
|
|
910
|
-
protected newTypeId: WritableSignal<string>;
|
|
911
|
-
protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
912
|
-
protected canAdd: _angular_core.Signal<boolean>;
|
|
913
|
-
protected selectedKey: WritableSignal<string | null>;
|
|
914
|
-
protected selectedItem: _angular_core.Signal<AXPExtraPropertySchemaItem | null>;
|
|
915
|
-
constructor();
|
|
916
|
-
protected handleAdd(): void;
|
|
917
|
-
protected handleRemove(key: string): void;
|
|
918
|
-
protected handleDrop(event: CdkDragDrop<AXPExtraPropertySchemaItem[]>): void;
|
|
919
|
-
protected handleUpdateTitle(key: string, title: string): void;
|
|
920
|
-
protected handleUpdateType(key: string, typeId: string): void;
|
|
921
|
-
protected newTypeChanged(val: string): void;
|
|
922
|
-
protected handleTitleChange(val: string): void;
|
|
923
|
-
protected handleSelect(key: string): void;
|
|
924
|
-
protected handleViewerChanged(e: {
|
|
925
|
-
values: any;
|
|
926
|
-
mode: 'init' | 'update';
|
|
927
|
-
}): void;
|
|
928
|
-
protected deriveKey(input: string): string;
|
|
929
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesSchemaComponent, never>;
|
|
930
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesSchemaComponent, "axp-extra-properties-schema", never, { "schema": { "alias": "schema"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "schemaChange": "schemaChange"; }, never, never, true, never>;
|
|
931
|
-
}
|
|
932
|
-
|
|
933
|
-
declare class AXPExtraPropertiesValuesComponent {
|
|
934
|
-
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
935
|
-
values: _angular_core.InputSignal<Record<string, any>>;
|
|
936
|
-
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
937
|
-
valuesChange: _angular_core.OutputEmitterRef<Record<string, any>>;
|
|
938
|
-
isRequired: (item: AXPExtraPropertySchemaItem) => any;
|
|
939
|
-
protected internalContext: _angular_core.WritableSignal<Record<string, any>>;
|
|
940
|
-
private nodeCache;
|
|
941
|
-
private lastTypeByKey;
|
|
942
|
-
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
943
|
-
private readonly syncContextFromInputs;
|
|
944
|
-
private readonly clearOnSchemaTypeChange;
|
|
945
|
-
protected getNode(item: AXPExtraPropertySchemaItem): AXPWidgetNode;
|
|
946
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesValuesComponent, never>;
|
|
947
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPExtraPropertiesValuesComponent, "axp-extra-properties-values", never, { "schema": { "alias": "schema"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "valuesChange": "valuesChange"; }, never, never, true, never>;
|
|
948
|
-
}
|
|
949
|
-
|
|
950
666
|
declare class AXPQueryFiltersComponent {
|
|
951
667
|
#private;
|
|
952
668
|
protected translate: AXTranslationService;
|
|
953
669
|
protected calendarService: AXCalendarService;
|
|
954
670
|
private filterOperatorMiddleware;
|
|
671
|
+
private settingsService;
|
|
955
672
|
filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
|
|
956
673
|
initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
|
|
957
674
|
onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
|
|
675
|
+
protected dateFormat: _angular_core.WritableSignal<string>;
|
|
958
676
|
protected tagBox: _angular_core.Signal<AXTagBoxComponent | undefined>;
|
|
959
677
|
protected widgetRenderer: _angular_core.Signal<AXPWidgetRendererDirective | undefined>;
|
|
960
678
|
tagBoxInput: any;
|
|
@@ -1000,6 +718,7 @@ declare class AXPImageEditorPopupComponent extends AXBasePageComponent {
|
|
|
1000
718
|
image: _angular_core.InputSignal<Blob>;
|
|
1001
719
|
showHistory: _angular_core.InputSignal<boolean>;
|
|
1002
720
|
look: _angular_core.InputSignal<"solid" | "outline" | "blank">;
|
|
721
|
+
aspectRatio: _angular_core.InputSignal<string | undefined>;
|
|
1003
722
|
private container;
|
|
1004
723
|
private blobUrl;
|
|
1005
724
|
protected url: _angular_core.WritableSignal<string | null>;
|
|
@@ -1012,7 +731,7 @@ declare class AXPImageEditorPopupComponent extends AXBasePageComponent {
|
|
|
1012
731
|
handleCancel(): void;
|
|
1013
732
|
ngOnDestroy(): void;
|
|
1014
733
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPImageEditorPopupComponent, never>;
|
|
1015
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPImageEditorPopupComponent, "axp-image-editor-popup", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
734
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPImageEditorPopupComponent, "axp-image-editor-popup", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1016
735
|
}
|
|
1017
736
|
|
|
1018
737
|
interface AXPImageEditorOpenOptions {
|
|
@@ -1020,6 +739,7 @@ interface AXPImageEditorOpenOptions {
|
|
|
1020
739
|
image: Blob;
|
|
1021
740
|
showHistory?: boolean;
|
|
1022
741
|
look?: 'solid' | 'outline' | 'blank';
|
|
742
|
+
aspectRatio?: string;
|
|
1023
743
|
}
|
|
1024
744
|
declare class AXPImageEditorService {
|
|
1025
745
|
private readonly popupService;
|
|
@@ -1029,80 +749,446 @@ declare class AXPImageEditorService {
|
|
|
1029
749
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
|
|
1030
750
|
}
|
|
1031
751
|
|
|
1032
|
-
|
|
752
|
+
/**
|
|
753
|
+
* Represents a spreadsheet item (row or column header) with id, text, and optional description
|
|
754
|
+
*/
|
|
755
|
+
interface AXPSpreadsheetItem {
|
|
756
|
+
id: string;
|
|
757
|
+
title: string;
|
|
758
|
+
description?: string;
|
|
759
|
+
/**
|
|
760
|
+
* Optional CSS class for cell styling (e.g., 'ax-bg-success-lightest ax-text-success' for green)
|
|
761
|
+
* Used when this item is used as a cell value to color-code the cell
|
|
762
|
+
* Allows proper control of both background and text colors
|
|
763
|
+
*/
|
|
764
|
+
cssClass?: string;
|
|
765
|
+
}
|
|
766
|
+
/**
|
|
767
|
+
* Represents the value structure for spreadsheet cells
|
|
768
|
+
* Stores only the ID reference to the item in cellOptions
|
|
769
|
+
*/
|
|
770
|
+
type AXPSpreadsheetCellValue = string | null;
|
|
771
|
+
/**
|
|
772
|
+
* Matrix data structure: { [rowId]: { [columnId]: cellValueId } }
|
|
773
|
+
* cellValueId is the ID of an item from cellOptions
|
|
774
|
+
*/
|
|
775
|
+
type AXPSpreadsheetData = Record<string, Record<string, AXPSpreadsheetCellValue>>;
|
|
776
|
+
/**
|
|
777
|
+
* Represents a column definition in the spreadsheet
|
|
778
|
+
*/
|
|
779
|
+
interface AXPSpreadsheetColumn {
|
|
780
|
+
/**
|
|
781
|
+
* Column identifier (unique name)
|
|
782
|
+
*/
|
|
1033
783
|
name: string;
|
|
784
|
+
/**
|
|
785
|
+
* Display title for column header
|
|
786
|
+
*/
|
|
1034
787
|
title: string;
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
788
|
+
/**
|
|
789
|
+
* Optional description for column header
|
|
790
|
+
*/
|
|
791
|
+
description?: string;
|
|
792
|
+
/**
|
|
793
|
+
* Path to access row property (e.g., 'user.name', 'age')
|
|
794
|
+
* Used to get/set values in row objects
|
|
795
|
+
*/
|
|
796
|
+
path: string;
|
|
797
|
+
/**
|
|
798
|
+
* Widget configuration for this column
|
|
799
|
+
* All cells in this column will use this widget
|
|
800
|
+
*/
|
|
801
|
+
widget: AXPWidgetNode;
|
|
802
|
+
/**
|
|
803
|
+
* Optional column width
|
|
804
|
+
*/
|
|
805
|
+
width?: string;
|
|
806
|
+
/**
|
|
807
|
+
* Column-level readonly override
|
|
808
|
+
*/
|
|
809
|
+
readonly?: boolean;
|
|
1041
810
|
}
|
|
1042
|
-
|
|
811
|
+
/**
|
|
812
|
+
* Spreadsheet row mode
|
|
813
|
+
* - 'fixed': Rows are provided as input, cannot add/remove (like matrix)
|
|
814
|
+
* - 'dynamic': Users can add/remove rows dynamically (like Excel)
|
|
815
|
+
*/
|
|
816
|
+
type AXPSpreadsheetRowMode = 'fixed' | 'dynamic';
|
|
817
|
+
/**
|
|
818
|
+
* Event emitted when a single cell value changes
|
|
819
|
+
*/
|
|
820
|
+
interface AXPSpreadsheetCellChangeEvent {
|
|
821
|
+
/**
|
|
822
|
+
* Row identifier (name for fixed mode, generated ID for dynamic mode)
|
|
823
|
+
*/
|
|
824
|
+
rowId: string;
|
|
825
|
+
/**
|
|
826
|
+
* Column name
|
|
827
|
+
*/
|
|
828
|
+
columnName: string;
|
|
829
|
+
/**
|
|
830
|
+
* New cell value (whatever the widget returns)
|
|
831
|
+
*/
|
|
832
|
+
value: any;
|
|
833
|
+
/**
|
|
834
|
+
* Full row object after update
|
|
835
|
+
*/
|
|
836
|
+
row: Record<string, any>;
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Event emitted when a row is added or removed (dynamic mode only)
|
|
840
|
+
*/
|
|
841
|
+
interface AXPSpreadsheetRowChangeEvent {
|
|
842
|
+
/**
|
|
843
|
+
* Type of change: 'add' or 'remove'
|
|
844
|
+
*/
|
|
845
|
+
type: 'add' | 'remove';
|
|
846
|
+
/**
|
|
847
|
+
* Row identifier
|
|
848
|
+
*/
|
|
849
|
+
rowId: string;
|
|
850
|
+
/**
|
|
851
|
+
* Full row object (for 'add' events)
|
|
852
|
+
*/
|
|
853
|
+
row?: Record<string, any>;
|
|
854
|
+
/**
|
|
855
|
+
* All rows after the change
|
|
856
|
+
*/
|
|
857
|
+
rows: Record<string, any>[];
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Configuration for the spreadsheet component
|
|
861
|
+
*/
|
|
862
|
+
interface AXPSpreadsheetConfig {
|
|
863
|
+
/**
|
|
864
|
+
* Widget configuration for cell editing (SelectBox)
|
|
865
|
+
*/
|
|
866
|
+
cellWidget?: AXPWidgetNode;
|
|
867
|
+
/**
|
|
868
|
+
* Whether the spreadsheet is in readonly mode
|
|
869
|
+
*/
|
|
870
|
+
readonly?: boolean;
|
|
871
|
+
/**
|
|
872
|
+
* Placeholder text for empty cells
|
|
873
|
+
*/
|
|
874
|
+
emptyCellPlaceholder?: string;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
declare class AXPSpreadsheetComponent {
|
|
878
|
+
protected readonly translationService: AXTranslationService;
|
|
879
|
+
/**
|
|
880
|
+
* Translated column titles
|
|
881
|
+
*/
|
|
882
|
+
protected translatedColumnTitles: _angular_core.WritableSignal<Map<string, string>>;
|
|
883
|
+
/**
|
|
884
|
+
* Title for the spreadsheet (displayed in corner cell)
|
|
885
|
+
*/
|
|
886
|
+
title: _angular_core.InputSignal<string>;
|
|
887
|
+
/**
|
|
888
|
+
* Column definitions
|
|
889
|
+
*/
|
|
890
|
+
columns: _angular_core.InputSignal<AXPSpreadsheetColumn[]>;
|
|
891
|
+
/**
|
|
892
|
+
* Row mode: 'fixed' or 'dynamic'
|
|
893
|
+
*/
|
|
894
|
+
rowMode: _angular_core.InputSignal<AXPSpreadsheetRowMode>;
|
|
895
|
+
/**
|
|
896
|
+
* Rows data (for fixed mode - input only)
|
|
897
|
+
* Each row must have a 'name' property for identification
|
|
898
|
+
*/
|
|
899
|
+
rowsInput: _angular_core.InputSignal<Record<string, any>[]>;
|
|
900
|
+
/**
|
|
901
|
+
* Rows data (for dynamic mode - two-way binding)
|
|
902
|
+
*/
|
|
903
|
+
rowsModel: _angular_core.ModelSignal<Record<string, any>[]>;
|
|
904
|
+
/**
|
|
905
|
+
* Whether the spreadsheet is in readonly mode
|
|
906
|
+
*/
|
|
907
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
908
|
+
/**
|
|
909
|
+
* Placeholder text for empty cells (default: "–")
|
|
910
|
+
*/
|
|
911
|
+
emptyCellPlaceholder: _angular_core.InputSignal<string>;
|
|
912
|
+
/**
|
|
913
|
+
* Path to property in row object to display as row header title
|
|
914
|
+
* Example: 'name', 'title', 'user.name'
|
|
915
|
+
*/
|
|
916
|
+
rowTitlePath: _angular_core.InputSignal<string | null>;
|
|
917
|
+
/**
|
|
918
|
+
* Path to property in row object to display as row header description
|
|
919
|
+
* Example: 'description', 'details', 'user.description'
|
|
920
|
+
*/
|
|
921
|
+
rowDescriptionPath: _angular_core.InputSignal<string | null>;
|
|
922
|
+
/**
|
|
923
|
+
* Whether to allow adding rows (dynamic mode only, default: true)
|
|
924
|
+
*/
|
|
925
|
+
allowAddRows: _angular_core.InputSignal<boolean>;
|
|
926
|
+
/**
|
|
927
|
+
* Whether to allow removing rows (default: true for dynamic mode, false for fixed mode)
|
|
928
|
+
* Can be enabled for fixed mode if needed
|
|
929
|
+
*/
|
|
930
|
+
allowRemoveRows: _angular_core.InputSignal<boolean>;
|
|
931
|
+
/**
|
|
932
|
+
* Emitted when a single cell value changes
|
|
933
|
+
*/
|
|
934
|
+
cellChange: _angular_core.OutputEmitterRef<AXPSpreadsheetCellChangeEvent>;
|
|
935
|
+
/**
|
|
936
|
+
* Emitted when rows are added or removed (dynamic mode only)
|
|
937
|
+
*/
|
|
938
|
+
rowChange: _angular_core.OutputEmitterRef<AXPSpreadsheetRowChangeEvent>;
|
|
939
|
+
/**
|
|
940
|
+
* Emitted when the entire spreadsheet data changes
|
|
941
|
+
*/
|
|
942
|
+
spreadsheetChange: _angular_core.OutputEmitterRef<Record<string, any>[]>;
|
|
943
|
+
/**
|
|
944
|
+
* Currently editing cell: { rowId, columnName } | null
|
|
945
|
+
*/
|
|
946
|
+
protected editingCell: _angular_core.WritableSignal<{
|
|
947
|
+
rowId: string;
|
|
948
|
+
columnName: string;
|
|
949
|
+
} | null>;
|
|
950
|
+
/**
|
|
951
|
+
* Original value when entering edit mode (for cancel functionality)
|
|
952
|
+
*/
|
|
953
|
+
private originalCellValue;
|
|
954
|
+
/**
|
|
955
|
+
* Internal rows state (for fixed mode)
|
|
956
|
+
*/
|
|
957
|
+
private internalRows;
|
|
958
|
+
/**
|
|
959
|
+
* Row ID mapping: rowId -> row index (for tracking)
|
|
960
|
+
*/
|
|
961
|
+
private rowIdMap;
|
|
962
|
+
/**
|
|
963
|
+
* Cache for widget nodes to prevent re-rendering
|
|
964
|
+
* Key: `${rowIndex}_${columnName}`, Value: AXPWidgetNode
|
|
965
|
+
*/
|
|
966
|
+
private widgetNodeCache;
|
|
967
|
+
/**
|
|
968
|
+
* Cache for cell values to detect actual changes
|
|
969
|
+
* Key: `${rowIndex}_${columnName}`, Value: any
|
|
970
|
+
*/
|
|
971
|
+
private cellValueCache;
|
|
972
|
+
/**
|
|
973
|
+
* Get current rows based on mode
|
|
974
|
+
*/
|
|
975
|
+
protected currentRows: _angular_core.Signal<Record<string, any>[]>;
|
|
976
|
+
/**
|
|
977
|
+
* Context for widgets-container (all rows as an object with rows array)
|
|
978
|
+
* This allows widgets to access their cell via path like: rows[index].column.path
|
|
979
|
+
*/
|
|
980
|
+
protected spreadsheetContext: _angular_core.Signal<{
|
|
981
|
+
rows: Record<string, any>[];
|
|
982
|
+
}>;
|
|
983
|
+
/**
|
|
984
|
+
* Get rows with IDs (ensure all rows have identifiers)
|
|
985
|
+
*/
|
|
986
|
+
protected rowsWithIds: _angular_core.Signal<{
|
|
987
|
+
rowId: string;
|
|
988
|
+
row: Record<string, any>;
|
|
989
|
+
}[]>;
|
|
990
|
+
/**
|
|
991
|
+
* Check if spreadsheet is empty
|
|
992
|
+
*/
|
|
993
|
+
protected isEmpty: _angular_core.Signal<boolean>;
|
|
994
|
+
/**
|
|
995
|
+
* Check if only columns are empty
|
|
996
|
+
*/
|
|
997
|
+
protected isColumnsEmpty: _angular_core.Signal<boolean>;
|
|
998
|
+
/**
|
|
999
|
+
* Check if only rows are empty
|
|
1000
|
+
*/
|
|
1001
|
+
protected isRowsEmpty: _angular_core.Signal<boolean>;
|
|
1002
|
+
constructor();
|
|
1003
|
+
/**
|
|
1004
|
+
* Get the value for a specific cell by row index
|
|
1005
|
+
*/
|
|
1006
|
+
protected getCellValue(rowIndex: number, columnName: string): any;
|
|
1007
|
+
/**
|
|
1008
|
+
* Get row title from row object using rowTitlePath
|
|
1009
|
+
*/
|
|
1010
|
+
protected getRowTitle(row: Record<string, any>, path: string): string;
|
|
1011
|
+
/**
|
|
1012
|
+
* Get row description from row object using rowDescriptionPath
|
|
1013
|
+
*/
|
|
1014
|
+
protected getRowDescription(row: Record<string, any>, path: string): string;
|
|
1015
|
+
/**
|
|
1016
|
+
* Get row by ID
|
|
1017
|
+
*/
|
|
1018
|
+
protected getRowById(rowId: string): Record<string, any> | null;
|
|
1019
|
+
/**
|
|
1020
|
+
* Check if a cell is currently being edited
|
|
1021
|
+
*/
|
|
1022
|
+
protected isCellEditing(rowId: string, columnName: string): boolean;
|
|
1023
|
+
/**
|
|
1024
|
+
* Check if a column is readonly
|
|
1025
|
+
*/
|
|
1026
|
+
protected isColumnReadonly(column: AXPSpreadsheetColumn): boolean;
|
|
1027
|
+
/**
|
|
1028
|
+
* Get widget node for a cell with dynamic path based on row index
|
|
1029
|
+
* Path format: rows[rowIndex].column.path
|
|
1030
|
+
* Uses caching to prevent unnecessary re-renders
|
|
1031
|
+
*/
|
|
1032
|
+
protected getCellWidgetNode(column: AXPSpreadsheetColumn, rowIndex: number): AXPWidgetNode;
|
|
1033
|
+
/**
|
|
1034
|
+
* Handle cell click to start editing
|
|
1035
|
+
*/
|
|
1036
|
+
protected handleCellClick(rowId: string, columnName: string, event?: MouseEvent): void;
|
|
1037
|
+
/**
|
|
1038
|
+
* Handle cell value change from widget
|
|
1039
|
+
* The widget sets the value at path like rows[index].column.path
|
|
1040
|
+
*/
|
|
1041
|
+
protected handleCellValueChange(rowIndex: number, columnName: string, event: AXPWidgetCoreContextChangeEvent): void;
|
|
1042
|
+
/**
|
|
1043
|
+
* Handle spreadsheet context change from widgets-container
|
|
1044
|
+
* This is called when any widget in the spreadsheet changes
|
|
1045
|
+
*/
|
|
1046
|
+
protected handleSpreadsheetContextChange(event: AXPWidgetCoreContextChangeEvent): void;
|
|
1047
|
+
/**
|
|
1048
|
+
* Handle blur event to stop editing (when user clicks away from cell)
|
|
1049
|
+
*/
|
|
1050
|
+
protected handleCellBlur(rowId: string, columnName: string): void;
|
|
1051
|
+
/**
|
|
1052
|
+
* Handle Escape key to cancel editing
|
|
1053
|
+
*/
|
|
1054
|
+
protected handleKeyDown(event: KeyboardEvent): void;
|
|
1055
|
+
/**
|
|
1056
|
+
* Commit cell edit (save changes and close editing mode)
|
|
1057
|
+
*/
|
|
1058
|
+
protected commitCellEdit(): void;
|
|
1059
|
+
/**
|
|
1060
|
+
* Cancel cell edit (discard changes and close editing mode - same as escape)
|
|
1061
|
+
*/
|
|
1062
|
+
protected cancelCellEdit(): void;
|
|
1063
|
+
/**
|
|
1064
|
+
* Handle click outside to stop editing
|
|
1065
|
+
*/
|
|
1066
|
+
protected handleClickOutside(event: MouseEvent): void;
|
|
1067
|
+
/**
|
|
1068
|
+
* Handle add row (dynamic mode only)
|
|
1069
|
+
*/
|
|
1070
|
+
protected handleAddRow(): void;
|
|
1071
|
+
/**
|
|
1072
|
+
* Handle remove row (works for both fixed and dynamic modes)
|
|
1073
|
+
*/
|
|
1074
|
+
protected handleRemoveRow(rowId: string, _event: AXClickEvent): void;
|
|
1075
|
+
/**
|
|
1076
|
+
* Generate unique row ID for dynamic mode
|
|
1077
|
+
*/
|
|
1078
|
+
private generateRowId;
|
|
1079
|
+
/**
|
|
1080
|
+
* Update rows array (sync internal state)
|
|
1081
|
+
*/
|
|
1082
|
+
private updateRows;
|
|
1083
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPSpreadsheetComponent, never>;
|
|
1084
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPSpreadsheetComponent, "axp-spreadsheet", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rowMode": { "alias": "rowMode"; "required": false; "isSignal": true; }; "rowsInput": { "alias": "rowsInput"; "required": false; "isSignal": true; }; "rowsModel": { "alias": "rowsModel"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "emptyCellPlaceholder": { "alias": "emptyCellPlaceholder"; "required": false; "isSignal": true; }; "rowTitlePath": { "alias": "rowTitlePath"; "required": false; "isSignal": true; }; "rowDescriptionPath": { "alias": "rowDescriptionPath"; "required": false; "isSignal": true; }; "allowAddRows": { "alias": "allowAddRows"; "required": false; "isSignal": true; }; "allowRemoveRows": { "alias": "allowRemoveRows"; "required": false; "isSignal": true; }; }, { "rowsModel": "rowsModelChange"; "cellChange": "cellChange"; "rowChange": "rowChange"; "spreadsheetChange": "spreadsheetChange"; }, never, never, true, never>;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
declare class AXPLogoComponent implements OnInit, OnChanges {
|
|
1088
|
+
source: any;
|
|
1089
|
+
protected logoType: string;
|
|
1090
|
+
private platform;
|
|
1091
|
+
ngOnInit(): void;
|
|
1092
|
+
ngOnChanges(): void;
|
|
1093
|
+
protected setLogoType(): void;
|
|
1094
|
+
protected setLogoTheme(): void;
|
|
1095
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLogoComponent, never>;
|
|
1096
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLogoComponent, "axp-logo", never, { "source": { "alias": "source"; "required": false; }; }, {}, never, never, true, never>;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
interface AXPPropertyViewerGroup {
|
|
1100
|
+
name: string;
|
|
1101
|
+
title: string;
|
|
1102
|
+
isCollapsed: boolean;
|
|
1103
|
+
props: AXPWidgetProperty[];
|
|
1104
|
+
}
|
|
1105
|
+
interface AXPPropertyViewerTab {
|
|
1106
|
+
name: string;
|
|
1107
|
+
title: string;
|
|
1108
|
+
groups: AXPPropertyViewerGroup[];
|
|
1109
|
+
}
|
|
1110
|
+
interface AXPPropertyViewerChangedEvent {
|
|
1043
1111
|
values: any;
|
|
1044
1112
|
mode: 'init' | 'update';
|
|
1045
1113
|
}
|
|
1046
|
-
|
|
1047
|
-
|
|
1114
|
+
|
|
1115
|
+
declare class AXPPropertyViewerComponent {
|
|
1116
|
+
/**
|
|
1117
|
+
* List of tabs that should be rendered inside the property viewer.
|
|
1118
|
+
*/
|
|
1119
|
+
tabsInput: _angular_core.InputSignal<AXPPropertyViewerTab[]>;
|
|
1120
|
+
/**
|
|
1121
|
+
* Determines rendering mode.
|
|
1122
|
+
*/
|
|
1048
1123
|
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1049
|
-
|
|
1124
|
+
/**
|
|
1125
|
+
* Emits when property context changes.
|
|
1126
|
+
*/
|
|
1127
|
+
onChanged: EventEmitter<AXPPropertyViewerChangedEvent>;
|
|
1050
1128
|
protected currentTabIndex: WritableSignal<number>;
|
|
1051
|
-
protected
|
|
1052
|
-
protected
|
|
1053
|
-
protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
|
|
1054
|
-
protected groups: _angular_core.Signal<{
|
|
1055
|
-
name: string;
|
|
1056
|
-
title: string;
|
|
1057
|
-
isCollapsed: boolean;
|
|
1058
|
-
props: AXPWidgetProperty[];
|
|
1059
|
-
}[]>;
|
|
1060
|
-
protected groupCollapsedStates: Map<string, boolean>;
|
|
1061
|
-
onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
|
|
1129
|
+
protected tabs: _angular_core.Signal<AXPPropertyViewerTab[]>;
|
|
1130
|
+
protected groups: _angular_core.Signal<AXPPropertyViewerGroup[]>;
|
|
1062
1131
|
protected context: WritableSignal<any>;
|
|
1063
|
-
protected
|
|
1132
|
+
protected groupCollapsedStates: Map<string, boolean>;
|
|
1064
1133
|
constructor();
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1134
|
+
/**
|
|
1135
|
+
* Replaces the current context with the provided value and emits an init event.
|
|
1136
|
+
*/
|
|
1137
|
+
initializeContext(value: any): void;
|
|
1138
|
+
/**
|
|
1139
|
+
* Merges the provided value into the current context and emits an update event.
|
|
1140
|
+
*/
|
|
1141
|
+
update(value: any): void;
|
|
1142
|
+
/**
|
|
1143
|
+
* Handles context changes produced by rendered widgets.
|
|
1144
|
+
*/
|
|
1145
|
+
protected handleContextChange(event: AXPWidgetCoreContextChangeEvent): void;
|
|
1146
|
+
/**
|
|
1147
|
+
* Handles tab selection changes.
|
|
1148
|
+
*/
|
|
1068
1149
|
protected handleTabChange(event: AXTabStripChangedEvent): void;
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1150
|
+
/**
|
|
1151
|
+
* Stores collapsed state for a group.
|
|
1152
|
+
*/
|
|
1153
|
+
protected handleCollapsedChange(groupName: string, isCollapsed: boolean): void;
|
|
1154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPropertyViewerComponent, never>;
|
|
1155
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPropertyViewerComponent, "axp-property-viewer", never, { "tabsInput": { "alias": "tabsInput"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
|
|
1072
1156
|
}
|
|
1073
1157
|
|
|
1074
|
-
declare class
|
|
1075
|
-
|
|
1158
|
+
declare class AXPPropertyViewerPopupComponent extends AXBasePageComponent {
|
|
1159
|
+
tabs: _angular_core.InputSignal<AXPPropertyViewerTab[]>;
|
|
1076
1160
|
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1077
|
-
|
|
1078
|
-
protected
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1161
|
+
context: _angular_core.InputSignal<any>;
|
|
1162
|
+
protected readonly propertyViewer: _angular_core.Signal<AXPPropertyViewerComponent | undefined>;
|
|
1163
|
+
protected readonly currentValues: _angular_core.WritableSignal<any>;
|
|
1164
|
+
protected currentMode: 'init' | 'update';
|
|
1165
|
+
constructor();
|
|
1166
|
+
protected handlePropertyChanged(event: AXPPropertyViewerChangedEvent): void;
|
|
1082
1167
|
protected handleCloseClick(): void;
|
|
1083
1168
|
protected handleApplyClick(): void;
|
|
1084
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1085
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<
|
|
1169
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPropertyViewerPopupComponent, never>;
|
|
1170
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPPropertyViewerPopupComponent, "axp-property-viewer-popup", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1086
1171
|
}
|
|
1087
1172
|
|
|
1088
|
-
interface
|
|
1173
|
+
interface AXPPropertyViewerConfig {
|
|
1089
1174
|
title: string;
|
|
1090
|
-
|
|
1175
|
+
tabs: AXPPropertyViewerTab[];
|
|
1176
|
+
context?: any;
|
|
1091
1177
|
mode?: 'simple' | 'advanced';
|
|
1092
1178
|
size?: 'sm' | 'md' | 'lg' | 'full';
|
|
1093
1179
|
}
|
|
1094
|
-
interface
|
|
1180
|
+
interface AXPPropertyViewerResult {
|
|
1095
1181
|
values: any;
|
|
1096
1182
|
mode: 'init' | 'update';
|
|
1097
1183
|
}
|
|
1098
|
-
declare class
|
|
1184
|
+
declare class AXPPropertyViewerService {
|
|
1099
1185
|
private readonly popupService;
|
|
1100
1186
|
/**
|
|
1101
|
-
* Open
|
|
1187
|
+
* Open property viewer popup with predefined tabs and context.
|
|
1102
1188
|
*/
|
|
1103
|
-
open(config:
|
|
1104
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1105
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
1189
|
+
open(config: AXPPropertyViewerConfig): Promise<AXPPropertyViewerResult | null>;
|
|
1190
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPropertyViewerService, never>;
|
|
1191
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPropertyViewerService>;
|
|
1106
1192
|
}
|
|
1107
1193
|
|
|
1108
1194
|
declare class AXPQuerySortsComponent {
|
|
@@ -1129,6 +1215,32 @@ declare class AXPStateMessageComponent {
|
|
|
1129
1215
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStateMessageComponent, "axp-state-message", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=actions]"], true, never>;
|
|
1130
1216
|
}
|
|
1131
1217
|
|
|
1218
|
+
declare class AXPStopwatchComponent implements OnDestroy {
|
|
1219
|
+
mode: _angular_core.InputSignal<"count-up" | "count-down">;
|
|
1220
|
+
timeLimit: _angular_core.InputSignal<number | undefined>;
|
|
1221
|
+
format: _angular_core.InputSignal<"hh:mm:ss" | "mm:ss" | "ss">;
|
|
1222
|
+
autoStart: _angular_core.InputSignal<boolean>;
|
|
1223
|
+
showControls: _angular_core.InputSignal<boolean>;
|
|
1224
|
+
value: _angular_core.InputSignal<number>;
|
|
1225
|
+
valueChange: _angular_core.OutputEmitterRef<number>;
|
|
1226
|
+
timeUp: _angular_core.OutputEmitterRef<void>;
|
|
1227
|
+
private readonly currentTime;
|
|
1228
|
+
protected readonly isRunning: _angular_core.WritableSignal<boolean>;
|
|
1229
|
+
private intervalId;
|
|
1230
|
+
protected readonly isTimeUp: _angular_core.Signal<boolean>;
|
|
1231
|
+
protected readonly displayTime: _angular_core.Signal<string>;
|
|
1232
|
+
constructor();
|
|
1233
|
+
ngOnDestroy(): void;
|
|
1234
|
+
start(): void;
|
|
1235
|
+
pause(): void;
|
|
1236
|
+
reset(): void;
|
|
1237
|
+
private stop;
|
|
1238
|
+
private onTimeUp;
|
|
1239
|
+
private formatTime;
|
|
1240
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStopwatchComponent, never>;
|
|
1241
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStopwatchComponent, "axp-stopwatch", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "timeLimit": { "alias": "timeLimit"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "autoStart": { "alias": "autoStart"; "required": false; "isSignal": true; }; "showControls": { "alias": "showControls"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "timeUp": "timeUp"; }, never, never, true, never>;
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1132
1244
|
interface AXPTemplateViewerConfig {
|
|
1133
1245
|
template: AXPWidgetNode | string;
|
|
1134
1246
|
title?: string;
|
|
@@ -1251,6 +1363,7 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
|
|
|
1251
1363
|
avatarColor: _angular_core.Signal<string>;
|
|
1252
1364
|
protected hasAvatar: _angular_core.Signal<boolean>;
|
|
1253
1365
|
protected isAvatarLoaded: _angular_core.WritableSignal<boolean>;
|
|
1366
|
+
protected isLoading: _angular_core.Signal<boolean>;
|
|
1254
1367
|
protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
|
|
1255
1368
|
protected onImageLoad(event: AXHtmlEvent<Event>): void;
|
|
1256
1369
|
ngOnInit(): void;
|
|
@@ -1286,6 +1399,94 @@ declare class AXPQueryViewsComponent {
|
|
|
1286
1399
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryViewsComponent, "axp-query-views", never, { "views": { "alias": "views"; "required": false; "isSignal": true; }; "selectedView": { "alias": "selectedView"; "required": true; "isSignal": true; }; }, { "views": "viewsChange"; "selectedView": "selectedViewChange"; }, never, never, true, never>;
|
|
1287
1400
|
}
|
|
1288
1401
|
|
|
1402
|
+
/**
|
|
1403
|
+
* Compact widget field configurator component
|
|
1404
|
+
* Designed to be embedded in entity definition forms for configuring widget properties
|
|
1405
|
+
*/
|
|
1406
|
+
declare class AXPWidgetFieldConfiguratorComponent {
|
|
1407
|
+
/**
|
|
1408
|
+
* Widget node configuration (two-way binding)
|
|
1409
|
+
*/
|
|
1410
|
+
widget: _angular_core.ModelSignal<AXPWidgetNode>;
|
|
1411
|
+
/**
|
|
1412
|
+
* Label for the widget selector
|
|
1413
|
+
*/
|
|
1414
|
+
label: _angular_core.InputSignal<string>;
|
|
1415
|
+
/**
|
|
1416
|
+
* Field name (technical identifier, used for form field path)
|
|
1417
|
+
*/
|
|
1418
|
+
fieldName: _angular_core.InputSignal<string>;
|
|
1419
|
+
/**
|
|
1420
|
+
* Field title (display name, used in UI labels and titles)
|
|
1421
|
+
*/
|
|
1422
|
+
fieldTitle: _angular_core.InputSignal<string>;
|
|
1423
|
+
/**
|
|
1424
|
+
* Readonly mode
|
|
1425
|
+
*/
|
|
1426
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
1427
|
+
private readonly widgetRegistry;
|
|
1428
|
+
private readonly widgetPropertyViewerService;
|
|
1429
|
+
private readonly translationService;
|
|
1430
|
+
private readonly formBuilderService;
|
|
1431
|
+
/**
|
|
1432
|
+
* Currently selected widget type
|
|
1433
|
+
*/
|
|
1434
|
+
protected selectedWidgetType: _angular_core.WritableSignal<string>;
|
|
1435
|
+
/**
|
|
1436
|
+
* Whether the component is in edit mode (showing select box)
|
|
1437
|
+
*/
|
|
1438
|
+
protected isEditMode: _angular_core.WritableSignal<boolean>;
|
|
1439
|
+
/**
|
|
1440
|
+
* Available widgets filtered by FormElement group
|
|
1441
|
+
*/
|
|
1442
|
+
protected availableWidgets: _angular_core.Signal<{
|
|
1443
|
+
value: string;
|
|
1444
|
+
text: string;
|
|
1445
|
+
icon: string | undefined;
|
|
1446
|
+
description: string | undefined;
|
|
1447
|
+
}[]>;
|
|
1448
|
+
/**
|
|
1449
|
+
* Current widget configuration details
|
|
1450
|
+
*/
|
|
1451
|
+
protected currentWidgetConfig: _angular_core.Signal<{
|
|
1452
|
+
title: string;
|
|
1453
|
+
description: string | undefined;
|
|
1454
|
+
icon: string | undefined;
|
|
1455
|
+
hasProperties: boolean | undefined;
|
|
1456
|
+
} | null>;
|
|
1457
|
+
/**
|
|
1458
|
+
* Whether configure button should be enabled
|
|
1459
|
+
*/
|
|
1460
|
+
protected canConfigure: _angular_core.Signal<boolean>;
|
|
1461
|
+
/**
|
|
1462
|
+
* Whether widget has been configured (has options)
|
|
1463
|
+
*/
|
|
1464
|
+
protected isConfigured: _angular_core.Signal<boolean>;
|
|
1465
|
+
/**
|
|
1466
|
+
* Whether preview button should be enabled
|
|
1467
|
+
*/
|
|
1468
|
+
protected canPreview: _angular_core.Signal<boolean>;
|
|
1469
|
+
/**
|
|
1470
|
+
* Enter edit mode (show select box)
|
|
1471
|
+
*/
|
|
1472
|
+
protected enterEditMode(): void;
|
|
1473
|
+
constructor();
|
|
1474
|
+
/**
|
|
1475
|
+
* Handle widget type change
|
|
1476
|
+
*/
|
|
1477
|
+
protected onWidgetTypeChange(event: any): Promise<void>;
|
|
1478
|
+
/**
|
|
1479
|
+
* Open widget property viewer
|
|
1480
|
+
*/
|
|
1481
|
+
protected openPropertyViewer(): Promise<void>;
|
|
1482
|
+
/**
|
|
1483
|
+
* Open widget preview with actual rendered widget
|
|
1484
|
+
*/
|
|
1485
|
+
protected openPreview(): Promise<void>;
|
|
1486
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetFieldConfiguratorComponent, never>;
|
|
1487
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetFieldConfiguratorComponent, "axp-widget-field-configurator", never, { "widget": { "alias": "widget"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "fieldName": { "alias": "fieldName"; "required": false; "isSignal": true; }; "fieldTitle": { "alias": "fieldTitle"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "widget": "widgetChange"; }, never, never, true, never>;
|
|
1488
|
+
}
|
|
1489
|
+
|
|
1289
1490
|
/**
|
|
1290
1491
|
* Generic interface for widget item data
|
|
1291
1492
|
*/
|
|
@@ -1346,5 +1547,123 @@ declare class AXPWidgetItemComponent {
|
|
|
1346
1547
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetItemComponent, "axp-widget-item", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": false; "isSignal": true; }; "showPinButton": { "alias": "showPinButton"; "required": false; "isSignal": true; }; "customClasses": { "alias": "customClasses"; "required": false; "isSignal": true; }; }, { "onWidgetClick": "onWidgetClick"; "onPinClick": "onPinClick"; }, never, never, true, never>;
|
|
1347
1548
|
}
|
|
1348
1549
|
|
|
1349
|
-
|
|
1350
|
-
|
|
1550
|
+
interface AXPWidgetPropertyTab {
|
|
1551
|
+
name: string;
|
|
1552
|
+
title: string;
|
|
1553
|
+
groups: {
|
|
1554
|
+
name: string;
|
|
1555
|
+
title: string;
|
|
1556
|
+
isCollapsed: boolean;
|
|
1557
|
+
props: AXPWidgetProperty[];
|
|
1558
|
+
}[];
|
|
1559
|
+
}
|
|
1560
|
+
interface AXPWidgetPropertiesChangedEvent {
|
|
1561
|
+
values: any;
|
|
1562
|
+
mode: 'init' | 'update';
|
|
1563
|
+
}
|
|
1564
|
+
declare class AXPWidgetPropertyViewerComponent {
|
|
1565
|
+
widget: _angular_core.InputSignal<AXPWidgetNode>;
|
|
1566
|
+
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1567
|
+
private widgetRegistryService;
|
|
1568
|
+
protected currentTabIndex: WritableSignal<number>;
|
|
1569
|
+
protected config: WritableSignal<AXPWidgetConfig<any> | null>;
|
|
1570
|
+
protected allPoperties: AXPWidgetProperty[];
|
|
1571
|
+
protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
|
|
1572
|
+
protected groups: _angular_core.Signal<{
|
|
1573
|
+
name: string;
|
|
1574
|
+
title: string;
|
|
1575
|
+
isCollapsed: boolean;
|
|
1576
|
+
props: AXPWidgetProperty[];
|
|
1577
|
+
}[]>;
|
|
1578
|
+
protected groupCollapsedStates: Map<string, boolean>;
|
|
1579
|
+
onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
|
|
1580
|
+
protected context: WritableSignal<any>;
|
|
1581
|
+
protected initialContext: any;
|
|
1582
|
+
constructor();
|
|
1583
|
+
update(values: any): void;
|
|
1584
|
+
private fillTabs;
|
|
1585
|
+
protected handleContextChange(e: AXPWidgetCoreContextChangeEvent): void;
|
|
1586
|
+
protected handleTabChange(event: AXTabStripChangedEvent): void;
|
|
1587
|
+
protected handleCollapsedChange(group: string, collapsed: boolean): void;
|
|
1588
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
|
|
1589
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
declare class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent {
|
|
1593
|
+
widget: _angular_core.InputSignal<AXPWidgetNode>;
|
|
1594
|
+
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1595
|
+
protected currentValues: _angular_core.WritableSignal<any>;
|
|
1596
|
+
protected handlePropertyChanged(event: {
|
|
1597
|
+
values: any;
|
|
1598
|
+
mode: 'init' | 'update';
|
|
1599
|
+
}): void;
|
|
1600
|
+
protected handleCloseClick(): void;
|
|
1601
|
+
protected handleApplyClick(): void;
|
|
1602
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerPopupComponent, never>;
|
|
1603
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerPopupComponent, "axp-widget-property-viewer-popup", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1606
|
+
interface AXPWidgetPropertyInjection {
|
|
1607
|
+
property: AXPWidgetProperty;
|
|
1608
|
+
tab?: {
|
|
1609
|
+
name?: string;
|
|
1610
|
+
title?: string;
|
|
1611
|
+
};
|
|
1612
|
+
group?: {
|
|
1613
|
+
name?: string;
|
|
1614
|
+
title?: string;
|
|
1615
|
+
};
|
|
1616
|
+
}
|
|
1617
|
+
interface AXPWidgetPropertyViewerConfig {
|
|
1618
|
+
title: string;
|
|
1619
|
+
widget: AXPWidgetNode;
|
|
1620
|
+
mode?: 'simple' | 'advanced';
|
|
1621
|
+
/**
|
|
1622
|
+
* Property names to exclude from the viewer.
|
|
1623
|
+
*/
|
|
1624
|
+
exclude?: string[];
|
|
1625
|
+
/**
|
|
1626
|
+
* Custom property injection configuration.
|
|
1627
|
+
*/
|
|
1628
|
+
custom?: {
|
|
1629
|
+
/**
|
|
1630
|
+
* Custom property injection entries.
|
|
1631
|
+
*/
|
|
1632
|
+
properties: AXPWidgetPropertyInjection[];
|
|
1633
|
+
/**
|
|
1634
|
+
* Default tab fallback if property injection doesn't specify one.
|
|
1635
|
+
* When omitted, falls back to the first tab or "general".
|
|
1636
|
+
*/
|
|
1637
|
+
defaultTab?: {
|
|
1638
|
+
name?: string;
|
|
1639
|
+
title?: string;
|
|
1640
|
+
};
|
|
1641
|
+
/**
|
|
1642
|
+
* Default group fallback when injection doesn't specify a group.
|
|
1643
|
+
* When omitted, falls back to the tab's first group or property defined group.
|
|
1644
|
+
*/
|
|
1645
|
+
defaultGroup?: {
|
|
1646
|
+
name?: string;
|
|
1647
|
+
title?: string;
|
|
1648
|
+
};
|
|
1649
|
+
};
|
|
1650
|
+
}
|
|
1651
|
+
interface AXPWidgetPropertyViewerResult {
|
|
1652
|
+
values: any;
|
|
1653
|
+
mode: 'init' | 'update';
|
|
1654
|
+
}
|
|
1655
|
+
declare class AXPWidgetPropertyViewerService {
|
|
1656
|
+
private readonly widgetRegistryService;
|
|
1657
|
+
private readonly propertyViewerService;
|
|
1658
|
+
/**
|
|
1659
|
+
* Open widget property viewer popup
|
|
1660
|
+
*/
|
|
1661
|
+
open(config: AXPWidgetPropertyViewerConfig): Promise<AXPWidgetPropertyViewerResult | null>;
|
|
1662
|
+
private buildTabs;
|
|
1663
|
+
private buildInitialContext;
|
|
1664
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerService, never>;
|
|
1665
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPLogoComponent, AXPMenuBadgeHelper, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPSpreadsheetComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
|
|
1669
|
+
export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPImageEditorOpenOptions, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPSpreadsheetCellChangeEvent, AXPSpreadsheetCellValue, AXPSpreadsheetColumn, AXPSpreadsheetConfig, AXPSpreadsheetData, AXPSpreadsheetItem, AXPSpreadsheetRowChangeEvent, AXPSpreadsheetRowMode, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyTab, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };
|