@acorex/platform 21.0.0-next.0 → 21.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/index.d.ts +238 -92
- package/common/index.d.ts +42 -606
- package/core/index.d.ts +432 -574
- package/fesm2022/acorex-platform-auth.mjs +200 -153
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +112 -1009
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +416 -694
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +11 -54
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +272 -414
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +3105 -2064
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +648 -756
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +4 -4
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +174 -248
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +55 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +48 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +974 -2994
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs → acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs} +5 -26
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs → acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs} +5 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +30 -166
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/layout/builder/index.d.ts +1 -4
- package/layout/components/index.d.ts +327 -405
- package/layout/designer/index.d.ts +3 -3
- package/layout/entity/index.d.ts +108 -163
- package/layout/widget-core/index.d.ts +49 -39
- package/layout/widgets/index.d.ts +54 -368
- package/package.json +1 -1
- package/themes/default/index.d.ts +2 -15
- package/themes/shared/index.d.ts +10 -10
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
|
@@ -1,18 +1,19 @@
|
|
|
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, WritableSignal, QueryList, EventEmitter } from '@angular/core';
|
|
3
3
|
import * as _acorex_platform_core from '@acorex/platform/core';
|
|
4
|
-
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
|
|
4
|
+
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPGridLayoutOptions, 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
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, AXPWidgetCoreContextChangeEvent, AXPWidgetRendererDirective, 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';
|
|
16
17
|
import { AXTagBoxComponent } from '@acorex/components/tag-box';
|
|
17
18
|
import { AXCalendarService } from '@acorex/core/date-time';
|
|
18
19
|
import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
|
|
@@ -425,7 +426,6 @@ interface AXPComponentSlotConfig {
|
|
|
425
426
|
priority?: number;
|
|
426
427
|
component?: Type<any>;
|
|
427
428
|
condition?: ((context?: AXPContextData) => (boolean | Promise<boolean>)) | string;
|
|
428
|
-
features?: string[];
|
|
429
429
|
loadComponent?: () => Type<any> | Promise<Type<any>>;
|
|
430
430
|
options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);
|
|
431
431
|
}
|
|
@@ -446,7 +446,6 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
446
446
|
private registryService;
|
|
447
447
|
private injector;
|
|
448
448
|
private evaluator;
|
|
449
|
-
private sessionService;
|
|
450
449
|
viewContainerRef: ViewContainerRef;
|
|
451
450
|
contextStore: {
|
|
452
451
|
data: _angular_core.Signal<AXPContextData>;
|
|
@@ -478,7 +477,6 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
478
477
|
isEmpty: _angular_core.Signal<boolean>;
|
|
479
478
|
private _viewCount;
|
|
480
479
|
private componentRefs;
|
|
481
|
-
private placeholderRefs;
|
|
482
480
|
constructor();
|
|
483
481
|
ngOnInit(): Promise<void>;
|
|
484
482
|
loadComponents(): Promise<void>;
|
|
@@ -530,7 +528,6 @@ interface AXPDataSelectorConfig {
|
|
|
530
528
|
parentField?: string;
|
|
531
529
|
allowCreate?: boolean;
|
|
532
530
|
filters?: AXDataSourceFilterOption;
|
|
533
|
-
selectedItemIds?: string[] | number[];
|
|
534
531
|
categoryFilter?: {
|
|
535
532
|
enabled: boolean;
|
|
536
533
|
title: string;
|
|
@@ -546,11 +543,8 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
546
543
|
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
547
544
|
protected filter: AXDataSourceFilterOption;
|
|
548
545
|
protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
|
|
546
|
+
protected initialSelectedItems: any[];
|
|
549
547
|
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
550
|
-
private initialSelectionApplied;
|
|
551
|
-
private userHasInteracted;
|
|
552
|
-
private isApplyingInitialSelection;
|
|
553
|
-
private initialSelectedItems;
|
|
554
548
|
protected activeCategoryFilter: _angular_core.WritableSignal<{
|
|
555
549
|
node: AXPCategoryEntity;
|
|
556
550
|
filterValue: any;
|
|
@@ -560,7 +554,6 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
560
554
|
private readonly translationService;
|
|
561
555
|
constructor();
|
|
562
556
|
protected allowSelect: _angular_core.Signal<boolean>;
|
|
563
|
-
protected selectedCount: _angular_core.Signal<number>;
|
|
564
557
|
protected hasSearch: _angular_core.Signal<boolean | undefined>;
|
|
565
558
|
protected categoryTreeConfig: _angular_core.Signal<{
|
|
566
559
|
textField: string;
|
|
@@ -579,7 +572,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
579
572
|
canCreateChild: boolean;
|
|
580
573
|
}>;
|
|
581
574
|
protected ngOnInit(): void;
|
|
582
|
-
protected ngAfterViewInit():
|
|
575
|
+
protected ngAfterViewInit(): void;
|
|
583
576
|
protected handleRowDbClick(e: AXDataTableRowDbClick): void;
|
|
584
577
|
protected handleRowClick(e: AXDataTableRowClick): void;
|
|
585
578
|
protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
|
|
@@ -594,11 +587,6 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
594
587
|
private applyFilterAndSort;
|
|
595
588
|
private applyCategoryFilter;
|
|
596
589
|
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;
|
|
602
590
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
|
|
603
591
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
|
|
604
592
|
}
|
|
@@ -663,12 +651,328 @@ declare class AXPDragDropListComponent {
|
|
|
663
651
|
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>;
|
|
664
652
|
}
|
|
665
653
|
|
|
654
|
+
interface AXPDynamicFormDesignerField {
|
|
655
|
+
id: string;
|
|
656
|
+
name: string;
|
|
657
|
+
title: string;
|
|
658
|
+
description?: string;
|
|
659
|
+
widget: AXPWidgetNode;
|
|
660
|
+
mode?: 'view' | 'edit';
|
|
661
|
+
layout?: AXPGridLayoutOptions;
|
|
662
|
+
validations?: Array<{
|
|
663
|
+
rule: string;
|
|
664
|
+
options?: Record<string, any>;
|
|
665
|
+
}>;
|
|
666
|
+
}
|
|
667
|
+
interface AXPDynamicFormDesignerGroup {
|
|
668
|
+
id: string;
|
|
669
|
+
name: string;
|
|
670
|
+
title?: string;
|
|
671
|
+
description?: string;
|
|
672
|
+
fields: AXPDynamicFormDesignerField[];
|
|
673
|
+
mode?: 'view' | 'edit';
|
|
674
|
+
layout?: AXPGridLayoutOptions;
|
|
675
|
+
look?: 'fieldset' | 'card' | 'group' | 'container';
|
|
676
|
+
}
|
|
677
|
+
interface AXPDynamicFormDesignerState {
|
|
678
|
+
groups: AXPDynamicFormDesignerGroup[];
|
|
679
|
+
selectedFieldId?: string;
|
|
680
|
+
selectedGroupId?: string;
|
|
681
|
+
mode: 'designer' | 'preview';
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Convert designer field to form field definition
|
|
685
|
+
*/
|
|
686
|
+
declare function convertDesignerFieldToFormField(field: AXPDynamicFormDesignerField): AXPDynamicFormFieldDefinition;
|
|
687
|
+
/**
|
|
688
|
+
* Convert designer group to form group definition
|
|
689
|
+
*/
|
|
690
|
+
declare function convertDesignerGroupToFormGroup(group: AXPDynamicFormDesignerGroup): AXPDynamicFormGroupDefinition;
|
|
691
|
+
/**
|
|
692
|
+
* Convert designer state to form definition
|
|
693
|
+
*/
|
|
694
|
+
declare function convertDesignerStateToFormDefinition(state: AXPDynamicFormDesignerState): AXPDynamicFormDefinition;
|
|
695
|
+
interface AXPFormElementWidget {
|
|
696
|
+
name: string;
|
|
697
|
+
title: string;
|
|
698
|
+
icon?: string;
|
|
699
|
+
description?: string;
|
|
700
|
+
type: string;
|
|
701
|
+
properties?: any[];
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
declare class AXPDynamicFormDesignerComponent {
|
|
705
|
+
formDefinition: _angular_core.ModelSignal<AXPDynamicFormDefinition>;
|
|
706
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
707
|
+
private isInternalUpdate;
|
|
708
|
+
private readonly widgetRegistry;
|
|
709
|
+
private readonly formBuilderService;
|
|
710
|
+
private readonly widgetPropertyViewerService;
|
|
711
|
+
private readonly translationService;
|
|
712
|
+
private readonly DEFAULT_GROUP_NAME;
|
|
713
|
+
protected selectedFieldId: _angular_core.WritableSignal<string | null>;
|
|
714
|
+
private designerState;
|
|
715
|
+
protected availableWidgets: _angular_core.Signal<AXPFormElementWidget[]>;
|
|
716
|
+
protected widgetOptions: _angular_core.Signal<{
|
|
717
|
+
value: string;
|
|
718
|
+
text: string;
|
|
719
|
+
}[]>;
|
|
720
|
+
protected getAllFields: _angular_core.Signal<AXPDynamicFormDesignerField[]>;
|
|
721
|
+
protected isDefaultGroup: (groupName: string) => boolean;
|
|
722
|
+
protected canDeleteGroup: _angular_core.Signal<boolean>;
|
|
723
|
+
protected isPreviewDisabled: _angular_core.Signal<boolean>;
|
|
724
|
+
protected designerGroups: _angular_core.Signal<AXPDynamicFormDesignerGroup[]>;
|
|
725
|
+
/**
|
|
726
|
+
* Create the default group for ungrouped fields
|
|
727
|
+
*/
|
|
728
|
+
private createDefaultGroup;
|
|
729
|
+
/**
|
|
730
|
+
* Ensure form definition has at least the default group
|
|
731
|
+
*/
|
|
732
|
+
private ensureDefaultGroup;
|
|
733
|
+
/**
|
|
734
|
+
* Effect to log form definition changes
|
|
735
|
+
*/
|
|
736
|
+
private logFormDefinitionChanges;
|
|
737
|
+
/**
|
|
738
|
+
* Effect to sync form definition model to designer state
|
|
739
|
+
*/
|
|
740
|
+
private syncModelToDesigner;
|
|
741
|
+
/**
|
|
742
|
+
* Effect to sync designer state changes back to model
|
|
743
|
+
*/
|
|
744
|
+
private syncDesignerToModel;
|
|
745
|
+
/**
|
|
746
|
+
* Get the current form definition (converted from designer state)
|
|
747
|
+
*/
|
|
748
|
+
getFormDefinition(): AXPDynamicFormDefinition;
|
|
749
|
+
/**
|
|
750
|
+
* Set the form definition (converted to designer state)
|
|
751
|
+
*/
|
|
752
|
+
setFormDefinition(definition: AXPDynamicFormDefinition): void;
|
|
753
|
+
/**
|
|
754
|
+
* Add a new field to the form
|
|
755
|
+
* @param field The field to add
|
|
756
|
+
* @param groupName Optional group name to add the field to. Defaults to the default group or first group.
|
|
757
|
+
*/
|
|
758
|
+
addField(field: AXPDynamicFormDesignerField, groupName?: string): void;
|
|
759
|
+
/**
|
|
760
|
+
* Update an existing field
|
|
761
|
+
* @param fieldId The ID of the field to update
|
|
762
|
+
* @param updates The updates to apply
|
|
763
|
+
*/
|
|
764
|
+
updateField(fieldId: string, updates: Partial<AXPDynamicFormDesignerField>): void;
|
|
765
|
+
/**
|
|
766
|
+
* Remove a field from the form
|
|
767
|
+
* @param fieldId The ID of the field to remove
|
|
768
|
+
*/
|
|
769
|
+
removeField(fieldId: string): void;
|
|
770
|
+
/**
|
|
771
|
+
* Get all available widget types
|
|
772
|
+
*/
|
|
773
|
+
getAvailableWidgets(): AXPFormElementWidget[];
|
|
774
|
+
/**
|
|
775
|
+
* Add a new group to the form
|
|
776
|
+
* @param group The group to add
|
|
777
|
+
*/
|
|
778
|
+
addGroup(group: AXPDynamicFormDesignerGroup): void;
|
|
779
|
+
/**
|
|
780
|
+
* Remove a group from the form
|
|
781
|
+
* @param groupName The name of the group to remove
|
|
782
|
+
*/
|
|
783
|
+
removeGroup(groupName: string): void;
|
|
784
|
+
/**
|
|
785
|
+
* Reorder groups in the form
|
|
786
|
+
* @param fromIndex Source index
|
|
787
|
+
* @param toIndex Target index
|
|
788
|
+
*/
|
|
789
|
+
reorderGroups(fromIndex: number, toIndex: number): void;
|
|
790
|
+
/**
|
|
791
|
+
* Update an existing group
|
|
792
|
+
* @param groupName The name of the group to update
|
|
793
|
+
* @param updates The updates to apply
|
|
794
|
+
*/
|
|
795
|
+
updateGroup(groupName: string, updates: Partial<AXPDynamicFormDesignerGroup>): void;
|
|
796
|
+
/**
|
|
797
|
+
* Move a field to a different group
|
|
798
|
+
* @param fieldName The name/path of the field to move
|
|
799
|
+
* @param targetGroupName The name of the target group
|
|
800
|
+
*/
|
|
801
|
+
moveFieldToGroup(fieldName: string, targetGroupName: string): void;
|
|
802
|
+
protected handleAddGroupClick(): Promise<void>;
|
|
803
|
+
protected handleAddFieldToGroup(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
804
|
+
protected handleFieldEdit(field: AXPDynamicFormDesignerField): Promise<void>;
|
|
805
|
+
protected handleFieldRemove(field: AXPDynamicFormDesignerField): void;
|
|
806
|
+
protected handleGroupEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
807
|
+
protected handleGroupLayoutEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
808
|
+
protected handleGroupRemove(group: AXPDynamicFormDesignerGroup): void;
|
|
809
|
+
/**
|
|
810
|
+
* Handle field layout editing
|
|
811
|
+
*/
|
|
812
|
+
protected handleFieldLayoutEdit(field: AXPDynamicFormDesignerField, group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
813
|
+
protected handleGroupDrop(event: CdkDragDrop<AXPDynamicFormDesignerGroup[]>): void;
|
|
814
|
+
protected handleFieldDrop(event: CdkDragDrop<AXPDynamicFormDesignerField[]>, targetGroupName?: string): void;
|
|
815
|
+
protected handlePreviewClick(): Promise<void>;
|
|
816
|
+
protected deriveKey(input: string): string;
|
|
817
|
+
protected generateId(): string;
|
|
818
|
+
protected getWidgetIcon(widgetName: string): string;
|
|
819
|
+
protected getWidgetTitle(widgetName: string): string;
|
|
820
|
+
protected getWidgetNode(field: AXPDynamicFormDesignerField): AXPWidgetNode;
|
|
821
|
+
protected deriveGroupKey(input: string): string;
|
|
822
|
+
protected getGroupOptions(): Array<{
|
|
823
|
+
value: string;
|
|
824
|
+
text: string;
|
|
825
|
+
}>;
|
|
826
|
+
protected addFieldToGroup(field: AXPDynamicFormDesignerField, groupName: string): void;
|
|
827
|
+
protected getAllGroupDropLists(): string[];
|
|
828
|
+
/**
|
|
829
|
+
* Get the grid column count for a group (always 12 columns)
|
|
830
|
+
*/
|
|
831
|
+
protected getGroupColumnCount(): number;
|
|
832
|
+
/**
|
|
833
|
+
* Get default field grid layout based on group configuration
|
|
834
|
+
*/
|
|
835
|
+
protected getFieldGridLayout(group: AXPDynamicFormDesignerGroup, fieldIndex?: number): AXPGridLayoutOptions;
|
|
836
|
+
private configurePreviewFieldset;
|
|
837
|
+
private configurePreviewFormField;
|
|
838
|
+
private configureFormFieldWidget;
|
|
839
|
+
private extractPreviewWidgetOptions;
|
|
840
|
+
private applyDesignerFieldUpdates;
|
|
841
|
+
private applyDesignerGroupUpdates;
|
|
842
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormDesignerComponent, never>;
|
|
843
|
+
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>;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
/**
|
|
847
|
+
* Describes a schema-only definition for an extra property (no value).
|
|
848
|
+
*/
|
|
849
|
+
interface AXPExtraPropertySchemaItem {
|
|
850
|
+
/** Unique key for the property (used as identifier) */
|
|
851
|
+
key: string;
|
|
852
|
+
/** Human-readable title/label */
|
|
853
|
+
title: string;
|
|
854
|
+
/** Widget name/id to render (e.g., 'text-editor', 'checkbox-editor') */
|
|
855
|
+
type: string;
|
|
856
|
+
/** Optional widget-specific options */
|
|
857
|
+
options?: AXPOptionsData;
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* Describes a single extra property row.
|
|
861
|
+
*/
|
|
862
|
+
interface AXPExtraPropertyItem extends AXPExtraPropertySchemaItem {
|
|
863
|
+
/** Current value bound to the rendered widget */
|
|
864
|
+
value: unknown;
|
|
865
|
+
}
|
|
866
|
+
/**
|
|
867
|
+
* Describes an available extra property type that user can select when adding rows.
|
|
868
|
+
*/
|
|
869
|
+
interface AXPExtraPropertyType {
|
|
870
|
+
/** Unique id for the type (it should be the same as the widget name) */
|
|
871
|
+
id: string;
|
|
872
|
+
/** UI title for selection dropdown */
|
|
873
|
+
title: string;
|
|
874
|
+
/** Default widget options applied on create */
|
|
875
|
+
defaultOptions?: AXPOptionsData;
|
|
876
|
+
}
|
|
877
|
+
/**
|
|
878
|
+
* Injection token to provide available extra property types.
|
|
879
|
+
*/
|
|
880
|
+
declare const AXP_EXTRA_PROPERTY_TYPES: InjectionToken<AXPExtraPropertyType[]>;
|
|
881
|
+
|
|
882
|
+
declare class AXPExtraPropertiesComponent {
|
|
883
|
+
items: _angular_core.InputSignal<AXPExtraPropertyItem[]>;
|
|
884
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
885
|
+
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
886
|
+
itemsChange: _angular_core.OutputEmitterRef<AXPExtraPropertyItem[]>;
|
|
887
|
+
private readonly providedTypes;
|
|
888
|
+
private readonly translationService;
|
|
889
|
+
protected newKey: WritableSignal<string>;
|
|
890
|
+
protected newTitle: WritableSignal<string>;
|
|
891
|
+
protected newTypeId: WritableSignal<string>;
|
|
892
|
+
protected newValue: WritableSignal<any>;
|
|
893
|
+
/** Local, ephemeral context for widget rendering */
|
|
894
|
+
protected internalContext: WritableSignal<Record<string, any>>;
|
|
895
|
+
private lastTypeByKey;
|
|
896
|
+
protected draftVersion: WritableSignal<number>;
|
|
897
|
+
protected draftKey: _angular_core.Signal<string>;
|
|
898
|
+
protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
899
|
+
protected presetTypes: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
900
|
+
protected canAdd: _angular_core.Signal<boolean>;
|
|
901
|
+
/** Sync incoming items' values into internal context for rendering */
|
|
902
|
+
private readonly syncContextFromItems;
|
|
903
|
+
/**
|
|
904
|
+
* Clear item values when their widget type changes to avoid incompatible stale values
|
|
905
|
+
*/
|
|
906
|
+
private readonly clearValueOnTypeChange;
|
|
907
|
+
protected handleAddItem(): void;
|
|
908
|
+
protected handleRemoveItem(key: string): void;
|
|
909
|
+
protected handleDrop(event: CdkDragDrop<AXPExtraPropertyItem[]>): void;
|
|
910
|
+
protected selectPreset(id: string): void;
|
|
911
|
+
private nodeCache;
|
|
912
|
+
private draftNodeCache?;
|
|
913
|
+
protected getNode(item: AXPExtraPropertyItem): AXPWidgetNode;
|
|
914
|
+
protected draftNode(): AXPWidgetNode;
|
|
915
|
+
protected newTypeChanged(val: string): void;
|
|
916
|
+
protected ngOnInit(): void;
|
|
917
|
+
protected handleTitleChange(val: string): void;
|
|
918
|
+
protected sanitizeKey(input: string): string;
|
|
919
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesComponent, never>;
|
|
920
|
+
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>;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
declare class AXPExtraPropertiesSchemaComponent {
|
|
924
|
+
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
925
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
926
|
+
schemaChange: _angular_core.OutputEmitterRef<AXPExtraPropertySchemaItem[]>;
|
|
927
|
+
private readonly providedTypes;
|
|
928
|
+
private readonly translationService;
|
|
929
|
+
protected newTitle: WritableSignal<string>;
|
|
930
|
+
protected newTypeId: WritableSignal<string>;
|
|
931
|
+
protected typeOptions: _angular_core.Signal<AXPExtraPropertyType[]>;
|
|
932
|
+
protected canAdd: _angular_core.Signal<boolean>;
|
|
933
|
+
protected selectedKey: WritableSignal<string | null>;
|
|
934
|
+
protected selectedItem: _angular_core.Signal<AXPExtraPropertySchemaItem | null>;
|
|
935
|
+
constructor();
|
|
936
|
+
protected handleAdd(): void;
|
|
937
|
+
protected handleRemove(key: string): void;
|
|
938
|
+
protected handleDrop(event: CdkDragDrop<AXPExtraPropertySchemaItem[]>): void;
|
|
939
|
+
protected handleUpdateTitle(key: string, title: string): void;
|
|
940
|
+
protected handleUpdateType(key: string, typeId: string): void;
|
|
941
|
+
protected newTypeChanged(val: string): void;
|
|
942
|
+
protected handleTitleChange(val: string): void;
|
|
943
|
+
protected handleSelect(key: string): void;
|
|
944
|
+
protected handleViewerChanged(e: {
|
|
945
|
+
values: any;
|
|
946
|
+
mode: 'init' | 'update';
|
|
947
|
+
}): void;
|
|
948
|
+
protected deriveKey(input: string): string;
|
|
949
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesSchemaComponent, never>;
|
|
950
|
+
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>;
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
declare class AXPExtraPropertiesValuesComponent {
|
|
954
|
+
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
955
|
+
values: _angular_core.InputSignal<Record<string, any>>;
|
|
956
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
957
|
+
valuesChange: _angular_core.OutputEmitterRef<Record<string, any>>;
|
|
958
|
+
isRequired: (item: AXPExtraPropertySchemaItem) => any;
|
|
959
|
+
protected internalContext: _angular_core.WritableSignal<Record<string, any>>;
|
|
960
|
+
private nodeCache;
|
|
961
|
+
private lastTypeByKey;
|
|
962
|
+
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
963
|
+
private readonly syncContextFromInputs;
|
|
964
|
+
private readonly clearOnSchemaTypeChange;
|
|
965
|
+
protected getNode(item: AXPExtraPropertySchemaItem): AXPWidgetNode;
|
|
966
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPExtraPropertiesValuesComponent, never>;
|
|
967
|
+
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>;
|
|
968
|
+
}
|
|
969
|
+
|
|
666
970
|
declare class AXPQueryFiltersComponent {
|
|
667
971
|
#private;
|
|
668
972
|
protected translate: AXTranslationService;
|
|
669
973
|
protected calendarService: AXCalendarService;
|
|
670
974
|
private filterOperatorMiddleware;
|
|
671
|
-
private
|
|
975
|
+
private settingService;
|
|
672
976
|
filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
|
|
673
977
|
initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
|
|
674
978
|
onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
|
|
@@ -749,353 +1053,6 @@ declare class AXPImageEditorService {
|
|
|
749
1053
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
|
|
750
1054
|
}
|
|
751
1055
|
|
|
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
|
-
*/
|
|
783
|
-
name: string;
|
|
784
|
-
/**
|
|
785
|
-
* Display title for column header
|
|
786
|
-
*/
|
|
787
|
-
title: string;
|
|
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;
|
|
810
|
-
}
|
|
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
1056
|
interface AXPPropertyViewerGroup {
|
|
1100
1057
|
name: string;
|
|
1101
1058
|
title: string;
|
|
@@ -1215,32 +1172,6 @@ declare class AXPStateMessageComponent {
|
|
|
1215
1172
|
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>;
|
|
1216
1173
|
}
|
|
1217
1174
|
|
|
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
|
-
|
|
1244
1175
|
interface AXPTemplateViewerConfig {
|
|
1245
1176
|
template: AXPWidgetNode | string;
|
|
1246
1177
|
title?: string;
|
|
@@ -1363,7 +1294,6 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
|
|
|
1363
1294
|
avatarColor: _angular_core.Signal<string>;
|
|
1364
1295
|
protected hasAvatar: _angular_core.Signal<boolean>;
|
|
1365
1296
|
protected isAvatarLoaded: _angular_core.WritableSignal<boolean>;
|
|
1366
|
-
protected isLoading: _angular_core.Signal<boolean>;
|
|
1367
1297
|
protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
|
|
1368
1298
|
protected onImageLoad(event: AXHtmlEvent<Event>): void;
|
|
1369
1299
|
ngOnInit(): void;
|
|
@@ -1413,13 +1343,9 @@ declare class AXPWidgetFieldConfiguratorComponent {
|
|
|
1413
1343
|
*/
|
|
1414
1344
|
label: _angular_core.InputSignal<string>;
|
|
1415
1345
|
/**
|
|
1416
|
-
* Field name (
|
|
1346
|
+
* Field name (used in property viewer title)
|
|
1417
1347
|
*/
|
|
1418
1348
|
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
1349
|
/**
|
|
1424
1350
|
* Readonly mode
|
|
1425
1351
|
*/
|
|
@@ -1484,7 +1410,7 @@ declare class AXPWidgetFieldConfiguratorComponent {
|
|
|
1484
1410
|
*/
|
|
1485
1411
|
protected openPreview(): Promise<void>;
|
|
1486
1412
|
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; }; "
|
|
1413
|
+
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; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "widget": "widgetChange"; }, never, never, true, never>;
|
|
1488
1414
|
}
|
|
1489
1415
|
|
|
1490
1416
|
/**
|
|
@@ -1618,10 +1544,6 @@ interface AXPWidgetPropertyViewerConfig {
|
|
|
1618
1544
|
title: string;
|
|
1619
1545
|
widget: AXPWidgetNode;
|
|
1620
1546
|
mode?: 'simple' | 'advanced';
|
|
1621
|
-
/**
|
|
1622
|
-
* Property names to exclude from the viewer.
|
|
1623
|
-
*/
|
|
1624
|
-
exclude?: string[];
|
|
1625
1547
|
/**
|
|
1626
1548
|
* Custom property injection configuration.
|
|
1627
1549
|
*/
|
|
@@ -1665,5 +1587,5 @@ declare class AXPWidgetPropertyViewerService {
|
|
|
1665
1587
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
|
|
1666
1588
|
}
|
|
1667
1589
|
|
|
1668
|
-
export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPImageEditorPopupComponent, AXPImageEditorService,
|
|
1669
|
-
export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem,
|
|
1590
|
+
export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPDynamicFormDesignerComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPMenuBadgeHelper, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPStateMessageComponent, 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_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, convertDesignerFieldToFormField, convertDesignerGroupToFormGroup, convertDesignerStateToFormDefinition };
|
|
1591
|
+
export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem, AXPDynamicFormDesignerField, AXPDynamicFormDesignerGroup, AXPDynamicFormDesignerState, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPFormElementWidget, AXPImageEditorOpenOptions, AXPPropertyViewerChangedEvent, AXPPropertyViewerConfig, AXPPropertyViewerGroup, AXPPropertyViewerResult, AXPPropertyViewerTab, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyInjection, AXPWidgetPropertyTab, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, StateMode };
|