@acorex/platform 21.0.0-next.2 → 21.0.0-next.3
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 +97 -238
- package/common/index.d.ts +778 -213
- package/core/index.d.ts +562 -433
- package/fesm2022/acorex-platform-auth.mjs +160 -200
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +1012 -125
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +685 -400
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +54 -11
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +412 -270
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +2112 -3153
- 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 +756 -648
- 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 +248 -174
- 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-tabular-data-edit-popup.component-m8rHZP8L.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.mjs +3058 -1038
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs → acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs} +26 -5
- 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-Cym8pq0v.mjs → acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs} +4 -5
- 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 +166 -30
- 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 +4 -1
- package/layout/components/index.d.ts +405 -327
- package/layout/designer/index.d.ts +3 -3
- package/layout/entity/index.d.ts +163 -108
- package/layout/widget-core/index.d.ts +39 -49
- package/layout/widgets/index.d.ts +368 -54
- package/package.json +5 -5
- package/themes/default/index.d.ts +15 -2
- package/themes/shared/index.d.ts +10 -10
- 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-m8rHZP8L.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.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
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';
|
|
@@ -426,6 +425,7 @@ interface AXPComponentSlotConfig {
|
|
|
426
425
|
priority?: number;
|
|
427
426
|
component?: Type<any>;
|
|
428
427
|
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,6 +446,7 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
446
446
|
private registryService;
|
|
447
447
|
private injector;
|
|
448
448
|
private evaluator;
|
|
449
|
+
private sessionService;
|
|
449
450
|
viewContainerRef: ViewContainerRef;
|
|
450
451
|
contextStore: {
|
|
451
452
|
data: _angular_core.Signal<AXPContextData>;
|
|
@@ -477,6 +478,7 @@ declare class AXPComponentSlotDirective implements OnInit {
|
|
|
477
478
|
isEmpty: _angular_core.Signal<boolean>;
|
|
478
479
|
private _viewCount;
|
|
479
480
|
private componentRefs;
|
|
481
|
+
private placeholderRefs;
|
|
480
482
|
constructor();
|
|
481
483
|
ngOnInit(): Promise<void>;
|
|
482
484
|
loadComponents(): Promise<void>;
|
|
@@ -528,6 +530,7 @@ interface AXPDataSelectorConfig {
|
|
|
528
530
|
parentField?: string;
|
|
529
531
|
allowCreate?: boolean;
|
|
530
532
|
filters?: AXDataSourceFilterOption;
|
|
533
|
+
selectedItemIds?: string[] | number[];
|
|
531
534
|
categoryFilter?: {
|
|
532
535
|
enabled: boolean;
|
|
533
536
|
title: string;
|
|
@@ -543,8 +546,11 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
543
546
|
protected searchPlaceholderText: _angular_core.WritableSignal<string>;
|
|
544
547
|
protected filter: AXDataSourceFilterOption;
|
|
545
548
|
protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
|
|
546
|
-
protected initialSelectedItems: any[];
|
|
547
549
|
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
550
|
+
private initialSelectionApplied;
|
|
551
|
+
private userHasInteracted;
|
|
552
|
+
private isApplyingInitialSelection;
|
|
553
|
+
private initialSelectedItems;
|
|
548
554
|
protected activeCategoryFilter: _angular_core.WritableSignal<{
|
|
549
555
|
node: AXPCategoryEntity;
|
|
550
556
|
filterValue: any;
|
|
@@ -554,6 +560,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
554
560
|
private readonly translationService;
|
|
555
561
|
constructor();
|
|
556
562
|
protected allowSelect: _angular_core.Signal<boolean>;
|
|
563
|
+
protected selectedCount: _angular_core.Signal<number>;
|
|
557
564
|
protected hasSearch: _angular_core.Signal<boolean | undefined>;
|
|
558
565
|
protected categoryTreeConfig: _angular_core.Signal<{
|
|
559
566
|
textField: string;
|
|
@@ -572,7 +579,7 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
572
579
|
canCreateChild: boolean;
|
|
573
580
|
}>;
|
|
574
581
|
protected ngOnInit(): void;
|
|
575
|
-
protected ngAfterViewInit(): void
|
|
582
|
+
protected ngAfterViewInit(): Promise<void>;
|
|
576
583
|
protected handleRowDbClick(e: AXDataTableRowDbClick): void;
|
|
577
584
|
protected handleRowClick(e: AXDataTableRowClick): void;
|
|
578
585
|
protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
|
|
@@ -587,6 +594,11 @@ declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
|
587
594
|
private applyFilterAndSort;
|
|
588
595
|
private applyCategoryFilter;
|
|
589
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;
|
|
590
602
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
|
|
591
603
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
|
|
592
604
|
}
|
|
@@ -651,328 +663,12 @@ declare class AXPDragDropListComponent {
|
|
|
651
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>;
|
|
652
664
|
}
|
|
653
665
|
|
|
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
|
-
|
|
970
666
|
declare class AXPQueryFiltersComponent {
|
|
971
667
|
#private;
|
|
972
668
|
protected translate: AXTranslationService;
|
|
973
669
|
protected calendarService: AXCalendarService;
|
|
974
670
|
private filterOperatorMiddleware;
|
|
975
|
-
private
|
|
671
|
+
private settingsService;
|
|
976
672
|
filtersDefinitions: _angular_core.InputSignal<AXPFilterDefinition[]>;
|
|
977
673
|
initialFilters: _angular_core.InputSignal<AXPFilterQuery[]>;
|
|
978
674
|
onFiltersChanged: _angular_core.OutputEmitterRef<AXPFilterQuery[]>;
|
|
@@ -1053,6 +749,353 @@ declare class AXPImageEditorService {
|
|
|
1053
749
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
|
|
1054
750
|
}
|
|
1055
751
|
|
|
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
|
+
|
|
1056
1099
|
interface AXPPropertyViewerGroup {
|
|
1057
1100
|
name: string;
|
|
1058
1101
|
title: string;
|
|
@@ -1172,6 +1215,32 @@ declare class AXPStateMessageComponent {
|
|
|
1172
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>;
|
|
1173
1216
|
}
|
|
1174
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
|
+
|
|
1175
1244
|
interface AXPTemplateViewerConfig {
|
|
1176
1245
|
template: AXPWidgetNode | string;
|
|
1177
1246
|
title?: string;
|
|
@@ -1294,6 +1363,7 @@ declare class AXPUserAvatarComponent implements OnInit, OnDestroy {
|
|
|
1294
1363
|
avatarColor: _angular_core.Signal<string>;
|
|
1295
1364
|
protected hasAvatar: _angular_core.Signal<boolean>;
|
|
1296
1365
|
protected isAvatarLoaded: _angular_core.WritableSignal<boolean>;
|
|
1366
|
+
protected isLoading: _angular_core.Signal<boolean>;
|
|
1297
1367
|
protected onImageError(event: AXHtmlEvent<ErrorEvent>): void;
|
|
1298
1368
|
protected onImageLoad(event: AXHtmlEvent<Event>): void;
|
|
1299
1369
|
ngOnInit(): void;
|
|
@@ -1343,9 +1413,13 @@ declare class AXPWidgetFieldConfiguratorComponent {
|
|
|
1343
1413
|
*/
|
|
1344
1414
|
label: _angular_core.InputSignal<string>;
|
|
1345
1415
|
/**
|
|
1346
|
-
* Field name (used
|
|
1416
|
+
* Field name (technical identifier, used for form field path)
|
|
1347
1417
|
*/
|
|
1348
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>;
|
|
1349
1423
|
/**
|
|
1350
1424
|
* Readonly mode
|
|
1351
1425
|
*/
|
|
@@ -1410,7 +1484,7 @@ declare class AXPWidgetFieldConfiguratorComponent {
|
|
|
1410
1484
|
*/
|
|
1411
1485
|
protected openPreview(): Promise<void>;
|
|
1412
1486
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetFieldConfiguratorComponent, never>;
|
|
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>;
|
|
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>;
|
|
1414
1488
|
}
|
|
1415
1489
|
|
|
1416
1490
|
/**
|
|
@@ -1544,6 +1618,10 @@ interface AXPWidgetPropertyViewerConfig {
|
|
|
1544
1618
|
title: string;
|
|
1545
1619
|
widget: AXPWidgetNode;
|
|
1546
1620
|
mode?: 'simple' | 'advanced';
|
|
1621
|
+
/**
|
|
1622
|
+
* Property names to exclude from the viewer.
|
|
1623
|
+
*/
|
|
1624
|
+
exclude?: string[];
|
|
1547
1625
|
/**
|
|
1548
1626
|
* Custom property injection configuration.
|
|
1549
1627
|
*/
|
|
@@ -1587,5 +1665,5 @@ declare class AXPWidgetPropertyViewerService {
|
|
|
1587
1665
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
|
|
1588
1666
|
}
|
|
1589
1667
|
|
|
1590
|
-
export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent,
|
|
1591
|
-
export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPColumnItemListItem, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDragDropListConfig, AXPDragDropListDropEvent, AXPDragDropListItem,
|
|
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 };
|