@acorex/components 20.2.49 → 20.2.51

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.
@@ -29,7 +29,7 @@ declare class AXNumberBoxComponent extends AXNumberBoxComponent_base {
29
29
  protected mode: _angular_core.WritableSignal<"digits" | "thousandsSeparator" | "decimal">;
30
30
  private input;
31
31
  protected stringValue: _angular_core.WritableSignal<string>;
32
- protected internalValueChanged(value: number): void;
32
+ protected internalValueChanged(value: number | undefined): void;
33
33
  private plusValue;
34
34
  private minusValue;
35
35
  protected handleOnKeydownEvent(e: KeyboardEvent): void;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "20.2.49",
3
+ "version": "20.2.51",
4
4
  "peerDependencies": {
5
- "@acorex/core": "20.2.49",
6
- "@acorex/cdk": "20.2.49",
5
+ "@acorex/core": "20.2.51",
6
+ "@acorex/cdk": "20.2.51",
7
7
  "@angular/common": "^20.0.0",
8
8
  "@angular/core": "^20.0.0",
9
9
  "@angular/cdk": "^20.0.0",
@@ -148,14 +148,14 @@
148
148
  "types": "./command/index.d.ts",
149
149
  "default": "./fesm2022/acorex-components-command.mjs"
150
150
  },
151
- "./comment": {
152
- "types": "./comment/index.d.ts",
153
- "default": "./fesm2022/acorex-components-comment.mjs"
154
- },
155
151
  "./conversation": {
156
152
  "types": "./conversation/index.d.ts",
157
153
  "default": "./fesm2022/acorex-components-conversation.mjs"
158
154
  },
155
+ "./comment": {
156
+ "types": "./comment/index.d.ts",
157
+ "default": "./fesm2022/acorex-components-comment.mjs"
158
+ },
159
159
  "./conversation2": {
160
160
  "types": "./conversation2/index.d.ts",
161
161
  "default": "./fesm2022/acorex-components-conversation2.mjs"
@@ -228,14 +228,14 @@
228
228
  "types": "./form/index.d.ts",
229
229
  "default": "./fesm2022/acorex-components-form.mjs"
230
230
  },
231
- "./grid-layout-builder": {
232
- "types": "./grid-layout-builder/index.d.ts",
233
- "default": "./fesm2022/acorex-components-grid-layout-builder.mjs"
234
- },
235
231
  "./image": {
236
232
  "types": "./image/index.d.ts",
237
233
  "default": "./fesm2022/acorex-components-image.mjs"
238
234
  },
235
+ "./grid-layout-builder": {
236
+ "types": "./grid-layout-builder/index.d.ts",
237
+ "default": "./fesm2022/acorex-components-grid-layout-builder.mjs"
238
+ },
239
239
  "./image-editor": {
240
240
  "types": "./image-editor/index.d.ts",
241
241
  "default": "./fesm2022/acorex-components-image-editor.mjs"
@@ -272,14 +272,14 @@
272
272
  "types": "./map/index.d.ts",
273
273
  "default": "./fesm2022/acorex-components-map.mjs"
274
274
  },
275
- "./media-viewer": {
276
- "types": "./media-viewer/index.d.ts",
277
- "default": "./fesm2022/acorex-components-media-viewer.mjs"
278
- },
279
275
  "./menu": {
280
276
  "types": "./menu/index.d.ts",
281
277
  "default": "./fesm2022/acorex-components-menu.mjs"
282
278
  },
279
+ "./media-viewer": {
280
+ "types": "./media-viewer/index.d.ts",
281
+ "default": "./fesm2022/acorex-components-media-viewer.mjs"
282
+ },
283
283
  "./modal": {
284
284
  "types": "./modal/index.d.ts",
285
285
  "default": "./fesm2022/acorex-components-modal.mjs"
@@ -64,19 +64,33 @@ interface AXTreeViewBeforeDropEvent extends AXEvent {
64
64
  currentIndex: number;
65
65
  canceled: boolean;
66
66
  }
67
+ /**
68
+ * Tree view node interface.
69
+ *
70
+ * By default, nodes should have the following structure:
71
+ * ```typescript
72
+ * {
73
+ * id: string; // Unique identifier for the node
74
+ * title: string; // Display text for the node
75
+ * tooltip?: string; // Optional tooltip text
76
+ * icon?: string; // Optional icon class name
77
+ * expanded?: boolean; // Whether the node is expanded
78
+ * selected?: boolean; // Whether the node is selected
79
+ * indeterminate?: boolean; // Whether the checkbox is in indeterminate state
80
+ * disabled?: boolean; // Whether the node is disabled
81
+ * hidden?: boolean; // Whether the node is hidden
82
+ * children?: AXTreeViewNode[]; // Child nodes
83
+ * childrenCount?: number; // Count of children (for lazy loading)
84
+ * data?: unknown; // Optional custom data
85
+ * }
86
+ * ```
87
+ *
88
+ * However, you can use custom field names by providing field name inputs
89
+ * (idField, titleField, etc.) to the component. The component will then
90
+ * use those field names to access node properties.
91
+ */
67
92
  interface AXTreeViewNode {
68
- id: string;
69
- label: string;
70
- icon?: string;
71
- expanded?: boolean;
72
- selected?: boolean;
73
- indeterminate?: boolean;
74
- disabled?: boolean;
75
- visible?: boolean;
76
- children?: AXTreeViewNode[];
77
- childrenCount?: number;
78
- loading?: boolean;
79
- data?: unknown;
93
+ [key: string]: unknown;
80
94
  }
81
95
  interface AXTreeViewNodeToggleEvent extends AXHtmlEvent {
82
96
  node: AXTreeViewNode;
@@ -84,6 +98,9 @@ interface AXTreeViewNodeToggleEvent extends AXHtmlEvent {
84
98
  interface AXTreeViewNodeSelectEvent extends AXHtmlEvent {
85
99
  node: AXTreeViewNode;
86
100
  }
101
+ interface AXTreeViewSelectionChangeEvent extends AXEvent {
102
+ selectedNodes: AXTreeViewNode[];
103
+ }
87
104
  interface AXTreeViewDropEvent extends AXEvent {
88
105
  node: AXTreeViewNode;
89
106
  previousParent?: AXTreeViewNode;
@@ -100,9 +117,39 @@ interface AXTreeViewItemTemplateContext {
100
117
  loading: boolean;
101
118
  }
102
119
  type AXTreeViewViewLook = 'default' | 'card' | 'with-line';
103
- type AXTreeViewDragMode = 'none' | 'handler' | 'item';
104
- type AXTreeViewDragOperationType = 'order-only' | 'move' | 'both';
105
- type AXTreeViewSelectMode = 'single' | 'multiple';
120
+ type AXTreeViewDragArea = 'handler' | 'item';
121
+ type AXTreeViewDragBehavior = 'none' | 'order-only' | 'move' | 'both';
122
+ type AXTreeViewSelectMode = 'none' | 'single' | 'multiple';
123
+ /**
124
+ * Selection behavior mode for tree nodes.
125
+ *
126
+ * Controls how node selection behaves in the tree:
127
+ * - **'all'**: No restrictions or special behavior. Any node can be selected independently.
128
+ * - **'intermediate'**: When children are selected, parent nodes show indeterminate state.
129
+ * If all children are selected, parent becomes selected; if some are selected, parent shows indeterminate.
130
+ * - **'leaf'**: Only leaf nodes (nodes with no children) can be selected. Parent nodes cannot be selected.
131
+ * - **'nested'**: Selecting a parent node automatically selects all its children (cascading selection).
132
+ * - **'intermediate-nested'**: Combines both behaviors - selecting parent selects children AND children selection affects parent state.
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Allow any node to be selected
137
+ * <ax-tree-view [selectionBehavior]="'all'" />
138
+ *
139
+ * // Only leaf nodes can be selected
140
+ * <ax-tree-view [selectionBehavior]="'leaf'" />
141
+ *
142
+ * // Parent shows indeterminate when children are selected
143
+ * <ax-tree-view [selectionBehavior]="'intermediate'" />
144
+ *
145
+ * // Selecting parent selects all children
146
+ * <ax-tree-view [selectionBehavior]="'nested'" />
147
+ *
148
+ * // Both: selecting parent selects children AND children affect parent state
149
+ * <ax-tree-view [selectionBehavior]="'intermediate-nested'" />
150
+ * ```
151
+ */
152
+ type AXTreeViewSelectionBehavior = 'all' | 'intermediate' | 'leaf' | 'nested' | 'intermediate-nested';
106
153
  /**
107
154
  * Function type for lazy loading tree nodes
108
155
  */
@@ -134,42 +181,62 @@ declare class AXTreeViewComponent {
134
181
  private readonly destroyRef;
135
182
  /** Tree data source - can be static array or lazy loading function */
136
183
  readonly datasource: _angular_core.ModelSignal<AXTreeViewDataSource>;
137
- /** Selection mode: 'single' (click to select) or 'multiple' (checkbox selection) */
184
+ /** Selection mode: 'single' (click to select) or 'multiple' (checkbox selection). Default: `'single'` */
138
185
  readonly selectMode: _angular_core.InputSignal<AXTreeViewSelectMode>;
139
- /** Whether to show checkboxes for selection (only applies to multiple mode) */
186
+ /** Whether to show checkboxes for selection (only applies to multiple mode). Default: `false`. When false and selectMode is not 'none', clicking on a node toggles its selection. */
140
187
  readonly showCheckbox: _angular_core.InputSignal<boolean>;
141
- /** When true, selecting a parent also selects all loaded children (only for multiple mode) */
142
- readonly checkChildrenOnSelect: _angular_core.InputSignal<boolean>;
143
- /** When true, selecting a child makes parents indeterminate (only for multiple mode) */
144
- readonly intermediateState: _angular_core.InputSignal<boolean>;
145
- /** When true, clicking on a node toggles its selection (works for both single and multiple modes) */
146
- readonly checkOnClick: _angular_core.InputSignal<boolean>;
147
- /** Drag and drop mode: 'none' (disabled), 'handler' (drag handle), 'item' (entire item) */
148
- readonly dragMode: _angular_core.InputSignal<AXTreeViewDragMode>;
149
- /** Drag operation type: 'order-only' (reorder only), 'move' (move between parents), 'both' (allow both) */
150
- readonly dragOperationType: _angular_core.InputSignal<AXTreeViewDragOperationType>;
151
- /** Whether to show icons */
188
+ /** Selection behavior: 'all' (select anything, no special behavior), 'intermediate' (parent indeterminate state when children selected), 'leaf' (only leaf nodes selectable), 'nested' (selecting parent selects all children). Default: `'intermediate'` */
189
+ readonly selectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehavior>;
190
+ /** Drag area: 'handler' (drag handle), 'item' (entire item). Default: `'handler'` */
191
+ readonly dragArea: _angular_core.InputSignal<AXTreeViewDragArea>;
192
+ /** Drag behavior: 'none' (disabled), 'order-only' (reorder only), 'move' (move between parents), 'both' (allow both). Default: `'none'` */
193
+ readonly dragBehavior: _angular_core.InputSignal<AXTreeViewDragBehavior>;
194
+ /** Whether to show icons. Default: `true` */
152
195
  readonly showIcons: _angular_core.InputSignal<boolean>;
153
- /** Whether to show children count badge */
196
+ /** Whether to show children count badge. Default: `true` */
154
197
  readonly showChildrenBadge: _angular_core.InputSignal<boolean>;
155
- /** Custom icon for expanded nodes */
198
+ /** Custom icon for expanded nodes. Default: `'fa-solid fa-chevron-down'` */
156
199
  readonly expandedIcon: _angular_core.InputSignal<string>;
157
- /** Custom icon for collapsed nodes */
200
+ /** Custom icon for collapsed nodes. Default: `'fa-solid fa-chevron-right'` */
158
201
  readonly collapsedIcon: _angular_core.InputSignal<string>;
159
- /** Indent size in pixels for each level */
202
+ /** Indent size in pixels for each level. Default: `16` */
160
203
  readonly indentSize: _angular_core.InputSignal<number>;
161
- /** Node height in pixels */
162
- readonly nodeHeight: _angular_core.InputSignal<"compact" | "normal" | "comfortable">;
163
- /** Visual style variant */
204
+ /** Visual style variant. Default: `'default'` */
164
205
  readonly look: _angular_core.InputSignal<AXTreeViewViewLook>;
165
- /** Custom template for tree items */
166
- readonly itemTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
206
+ /** Custom template for tree items. Default: `undefined` */
207
+ readonly nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
208
+ /** Field name for node ID. Default: `'id'` */
209
+ readonly idField: _angular_core.InputSignal<string>;
210
+ /** Field name for node title. Default: `'title'` */
211
+ readonly titleField: _angular_core.InputSignal<string>;
212
+ /** Field name for node tooltip. Default: `'tooltip'` */
213
+ readonly tooltipField: _angular_core.InputSignal<string>;
214
+ /** Field name for node icon. Default: `'icon'` */
215
+ readonly iconField: _angular_core.InputSignal<string>;
216
+ /** Field name for expanded state. Default: `'expanded'` */
217
+ readonly expandedField: _angular_core.InputSignal<string>;
218
+ /** Field name for selected state. Default: `'selected'` */
219
+ readonly selectedField: _angular_core.InputSignal<string>;
220
+ /** Field name for indeterminate state. Default: `'indeterminate'` */
221
+ readonly indeterminateField: _angular_core.InputSignal<string>;
222
+ /** Field name for disabled state. Default: `'disabled'` */
223
+ readonly disabledField: _angular_core.InputSignal<string>;
224
+ /** Field name for hidden state. Default: `'hidden'` */
225
+ readonly hiddenField: _angular_core.InputSignal<string>;
226
+ /** Field name for children array. Default: `'children'` */
227
+ readonly childrenField: _angular_core.InputSignal<string>;
228
+ /** Field name for children count. Default: `'childrenCount'` */
229
+ readonly childrenCountField: _angular_core.InputSignal<string>;
230
+ /** Field name for custom data. Default: `'data'` */
231
+ readonly dataField: _angular_core.InputSignal<string>;
167
232
  /** Emitted before a drop operation - set canceled to true to prevent drop */
168
233
  readonly onBeforeDrop: _angular_core.OutputEmitterRef<AXTreeViewBeforeDropEvent>;
169
234
  /** Emitted when a node is toggled (expanded/collapsed) */
170
235
  readonly onNodeToggle: _angular_core.OutputEmitterRef<AXTreeViewNodeToggleEvent>;
171
236
  /** Emitted when a node is selected/deselected */
172
237
  readonly onNodeSelect: _angular_core.OutputEmitterRef<AXTreeViewNodeSelectEvent>;
238
+ /** Emitted when selection changes - returns all currently selected nodes */
239
+ readonly onSelectionChange: _angular_core.OutputEmitterRef<AXTreeViewSelectionChangeEvent>;
173
240
  /** Emitted when nodes are reordered within the same parent */
174
241
  readonly onOrderChange: _angular_core.OutputEmitterRef<AXTreeViewDropEvent>;
175
242
  /** Emitted when a node is moved to a different parent */
@@ -191,6 +258,86 @@ declare class AXTreeViewComponent {
191
258
  private isUpdatingFromDatasource;
192
259
  /** Computed to check if datasource is a function */
193
260
  private readonly isLazyDataSource;
261
+ /** Computed: Returns true when selection is restricted to leaf nodes only */
262
+ protected readonly isLeafOnlyMode: _angular_core.Signal<boolean>;
263
+ /** Computed: Returns true when selecting a parent automatically selects all its children */
264
+ protected readonly cascadesToChildren: _angular_core.Signal<boolean>;
265
+ /** Computed: Returns true when parent nodes show indeterminate state based on children selection */
266
+ protected readonly hasIntermediateState: _angular_core.Signal<boolean>;
267
+ /** Computed: Returns true when drag handle should be shown */
268
+ protected readonly shouldShowDragHandle: _angular_core.Signal<boolean>;
269
+ /**
270
+ * Get a property value from a node using the configured field name
271
+ */
272
+ protected getNodeProp<T = unknown>(node: AXTreeViewNode, fieldName: string, defaultValue?: T): T;
273
+ /**
274
+ * Set a property value on a node using the configured field name
275
+ */
276
+ protected setNodeProp(node: AXTreeViewNode, fieldName: string, value: unknown): void;
277
+ /**
278
+ * Get node ID
279
+ */
280
+ protected getNodeId(node: AXTreeViewNode): string;
281
+ /**
282
+ * Get node title
283
+ */
284
+ protected getNodeTitle(node: AXTreeViewNode): string;
285
+ /**
286
+ * Get node tooltip
287
+ */
288
+ protected getNodeTooltip(node: AXTreeViewNode): string | undefined;
289
+ /**
290
+ * Get node icon
291
+ */
292
+ protected getNodeIcon(node: AXTreeViewNode): string | undefined;
293
+ /**
294
+ * Get node expanded state
295
+ */
296
+ protected getNodeExpanded(node: AXTreeViewNode): boolean;
297
+ /**
298
+ * Set node expanded state
299
+ */
300
+ protected setNodeExpanded(node: AXTreeViewNode, value: boolean): void;
301
+ /**
302
+ * Get node selected state
303
+ */
304
+ protected getNodeSelected(node: AXTreeViewNode): boolean;
305
+ /**
306
+ * Set node selected state
307
+ */
308
+ protected setNodeSelected(node: AXTreeViewNode, value: boolean): void;
309
+ /**
310
+ * Get node indeterminate state
311
+ */
312
+ protected getNodeIndeterminate(node: AXTreeViewNode): boolean;
313
+ /**
314
+ * Set node indeterminate state
315
+ */
316
+ protected setNodeIndeterminate(node: AXTreeViewNode, value: boolean): void;
317
+ /**
318
+ * Get node disabled state
319
+ */
320
+ protected getNodeDisabled(node: AXTreeViewNode): boolean;
321
+ /**
322
+ * Get node hidden state
323
+ */
324
+ protected getNodeHidden(node: AXTreeViewNode): boolean;
325
+ /**
326
+ * Get node children array
327
+ */
328
+ protected getNodeChildren(node: AXTreeViewNode): AXTreeViewNode[] | undefined;
329
+ /**
330
+ * Set node children array
331
+ */
332
+ protected setNodeChildren(node: AXTreeViewNode, value: AXTreeViewNode[] | undefined): void;
333
+ /**
334
+ * Get node children count
335
+ */
336
+ protected getNodeChildrenCount(node: AXTreeViewNode): number | undefined;
337
+ /**
338
+ * Set node children count
339
+ */
340
+ protected setNodeChildrenCount(node: AXTreeViewNode, value: number | undefined): void;
194
341
  /**
195
342
  * Expand all nodes in the tree (with lazy loading support)
196
343
  */
@@ -235,6 +382,10 @@ declare class AXTreeViewComponent {
235
382
  * Check if a node is currently loading
236
383
  */
237
384
  isNodeLoading(nodeId: string): boolean;
385
+ /**
386
+ * Get loading state for a node (internal state)
387
+ */
388
+ getNodeLoading(node: AXTreeViewNode): boolean;
238
389
  /**
239
390
  * Edit/update a node's properties
240
391
  * @param nodeId - The ID of the node to edit
@@ -383,6 +534,19 @@ declare class AXTreeViewComponent {
383
534
  * Check if checkboxes should be shown (only for multiple mode)
384
535
  */
385
536
  shouldShowCheckbox(): boolean;
537
+ /**
538
+ * Check if a node is a leaf (has no children)
539
+ * A node is a leaf if it has no loaded children AND no childrenCount (or childrenCount is 0)
540
+ */
541
+ isLeafNode(node: AXTreeViewNode): boolean;
542
+ /**
543
+ * Check if a node can be selected (considering selectMode and isLeafOnlyMode)
544
+ */
545
+ canSelectNode(node: AXTreeViewNode): boolean;
546
+ /**
547
+ * Check if checkbox should be shown for a specific node
548
+ */
549
+ shouldShowCheckboxForNode(node: AXTreeViewNode): boolean;
386
550
  /**
387
551
  * Generate unique list ID for each node
388
552
  */
@@ -404,7 +568,11 @@ declare class AXTreeViewComponent {
404
568
  */
405
569
  getNodeAriaSelected(node: AXTreeViewNode): string | null;
406
570
  /**
407
- * Handle node click - for single selection mode or multiple mode with checkOnClick enabled
571
+ * Emit selection change event with all selected nodes
572
+ */
573
+ private emitSelectionChange;
574
+ /**
575
+ * Handle node click - for single selection mode or multiple mode when showCheckbox is false
408
576
  */
409
577
  onNodeClick(node: AXTreeViewNode, event: Event): void;
410
578
  /**
@@ -462,7 +630,7 @@ declare class AXTreeViewComponent {
462
630
  */
463
631
  private handleSingleSelection;
464
632
  /**
465
- * Handle multiple selection mode with checkOnClick
633
+ * Handle multiple selection mode when showCheckbox is false (click to toggle)
466
634
  */
467
635
  private handleMultipleSelection;
468
636
  /**
@@ -474,11 +642,11 @@ declare class AXTreeViewComponent {
474
642
  */
475
643
  private findParentByListId;
476
644
  /**
477
- * Check if move operation is allowed based on dragOperationType
645
+ * Check if move operation is allowed based on dragBehavior
478
646
  */
479
647
  private canMoveToParent;
480
648
  /**
481
- * Check if reorder operation is allowed based on dragOperationType
649
+ * Check if reorder operation is allowed based on dragBehavior
482
650
  */
483
651
  private canReorder;
484
652
  /**
@@ -510,10 +678,14 @@ declare class AXTreeViewComponent {
510
678
  private handleNavigationKey;
511
679
  /**
512
680
  * Handle Space key selection
681
+ * In single mode: replaces selection (deselects all, selects this node)
682
+ * In multiple mode: toggles selection
513
683
  */
514
684
  private handleSpaceKeySelection;
515
685
  /**
516
686
  * Handle Enter key selection
687
+ * In single mode: replaces selection (deselects all, selects this node)
688
+ * In multiple mode: replaces selection (deselects all, selects this node and respects selectionBehavior)
517
689
  */
518
690
  private handleEnterKeySelection;
519
691
  /**
@@ -529,7 +701,7 @@ declare class AXTreeViewComponent {
529
701
  */
530
702
  private handleError;
531
703
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewComponent, never>;
532
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "checkChildrenOnSelect": { "alias": "checkChildrenOnSelect"; "required": false; "isSignal": true; }; "intermediateState": { "alias": "intermediateState"; "required": false; "isSignal": true; }; "checkOnClick": { "alias": "checkOnClick"; "required": false; "isSignal": true; }; "dragMode": { "alias": "dragMode"; "required": false; "isSignal": true; }; "dragOperationType": { "alias": "dragOperationType"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showChildrenBadge": { "alias": "showChildrenBadge"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "nodeHeight": { "alias": "nodeHeight"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
704
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewComponent, "ax-tree-view", never, { "datasource": { "alias": "datasource"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "dragArea": { "alias": "dragArea"; "required": false; "isSignal": true; }; "dragBehavior": { "alias": "dragBehavior"; "required": false; "isSignal": true; }; "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; "showChildrenBadge": { "alias": "showChildrenBadge"; "required": false; "isSignal": true; }; "expandedIcon": { "alias": "expandedIcon"; "required": false; "isSignal": true; }; "collapsedIcon": { "alias": "collapsedIcon"; "required": false; "isSignal": true; }; "indentSize": { "alias": "indentSize"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "titleField": { "alias": "titleField"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "hiddenField": { "alias": "hiddenField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "childrenCountField": { "alias": "childrenCountField"; "required": false; "isSignal": true; }; "dataField": { "alias": "dataField"; "required": false; "isSignal": true; }; }, { "datasource": "datasourceChange"; "onBeforeDrop": "onBeforeDrop"; "onNodeToggle": "onNodeToggle"; "onNodeSelect": "onNodeSelect"; "onSelectionChange": "onSelectionChange"; "onOrderChange": "onOrderChange"; "onMoveChange": "onMoveChange"; "onItemsChange": "onItemsChange"; }, never, never, true, never>;
533
705
  }
534
706
 
535
707
  declare class AXTreeViewModule {
@@ -549,16 +721,16 @@ declare class AXTreeViewService {
549
721
  /**
550
722
  * Find a node by ID in the tree
551
723
  */
552
- findNodeById(nodes: AXTreeViewNode[], id: string): AXTreeViewNode | null;
724
+ findNodeById(nodes: AXTreeViewNode[], id: string, idField?: string): AXTreeViewNode | null;
553
725
  /**
554
726
  * Find parent node of a given node
555
727
  */
556
- findParentNode(nodes: AXTreeViewNode[], targetNode: AXTreeViewNode): AXTreeViewNode | undefined;
728
+ findParentNode(nodes: AXTreeViewNode[], targetNode: AXTreeViewNode, idField?: string, childrenField?: string): AXTreeViewNode | undefined;
557
729
  /**
558
730
  * Check if targetNode is a descendant of ancestorNode (or the same node)
559
731
  * Prevents circular references by checking if target exists in ancestor's children tree
560
732
  */
561
- isValidDropTarget(movedNode: AXTreeViewNode, targetNode: AXTreeViewNode): boolean;
733
+ isValidDropTarget(movedNode: AXTreeViewNode, targetNode: AXTreeViewNode, idField?: string, childrenField?: string): boolean;
562
734
  /**
563
735
  * Check if targetNode is a descendant of ancestorNode
564
736
  */
@@ -566,67 +738,67 @@ declare class AXTreeViewService {
566
738
  /**
567
739
  * Build a flat list of all visible focusable nodes
568
740
  */
569
- buildFlatNodeList(nodes: AXTreeViewNode[]): AXTreeViewFlatNode[];
741
+ buildFlatNodeList(nodes: AXTreeViewNode[], hiddenField?: string, disabledField?: string, expandedField?: string, childrenField?: string): AXTreeViewFlatNode[];
570
742
  /**
571
743
  * Check if node has children
572
744
  */
573
- hasChildren(node: AXTreeViewNode): boolean;
745
+ hasChildren(node: AXTreeViewNode, childrenField?: string): boolean;
574
746
  /**
575
747
  * Check if node can be lazy loaded
576
748
  */
577
- canLazyLoad(node: AXTreeViewNode, isLazyDataSource: boolean): boolean;
749
+ canLazyLoad(node: AXTreeViewNode, isLazyDataSource: boolean, childrenCountField?: string, childrenField?: string): boolean;
578
750
  /**
579
751
  * Recursively select/deselect all children
580
752
  */
581
- selectAllChildren(children: AXTreeViewNode[], selected: boolean): void;
753
+ selectAllChildren(children: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
582
754
  /**
583
755
  * Get selection state of children
584
756
  */
585
- getChildrenSelectionState(children: AXTreeViewNode[]): AXTreeViewChildrenSelectionState;
757
+ getChildrenSelectionState(children: AXTreeViewNode[], selectedField?: string, indeterminateField?: string): AXTreeViewChildrenSelectionState;
586
758
  /**
587
759
  * Update parent node states based on children selection (with intermediate state support)
588
760
  */
589
- updateParentStates(nodes: AXTreeViewNode[], changedNode: AXTreeViewNode, intermediateState: boolean): void;
761
+ updateParentStates(nodes: AXTreeViewNode[], changedNode: AXTreeViewNode, intermediateState: boolean, idField?: string, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
590
762
  /**
591
763
  * Recursively deselect all nodes
592
764
  */
593
- deselectAllNodes(nodes: AXTreeViewNode[]): void;
765
+ deselectAllNodes(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
594
766
  /**
595
767
  * Recursively set selection state for all nodes
596
768
  */
597
- setAllSelection(nodes: AXTreeViewNode[], selected: boolean): void;
769
+ setAllSelection(nodes: AXTreeViewNode[], selected: boolean, selectedField?: string, indeterminateField?: string, childrenField?: string): void;
598
770
  /**
599
771
  * Recursively count selected nodes
600
772
  */
601
- countSelected(nodes: AXTreeViewNode[]): number;
773
+ countSelected(nodes: AXTreeViewNode[], selectedField?: string, childrenField?: string): number;
602
774
  /**
603
775
  * Recursively collect selected nodes
604
776
  */
605
- collectSelected(nodes: AXTreeViewNode[], result: AXTreeViewNode[]): void;
777
+ collectSelected(nodes: AXTreeViewNode[], result: AXTreeViewNode[], selectedField?: string, childrenField?: string): void;
606
778
  /**
607
779
  * Recursively remove selected nodes
608
780
  */
609
- removeSelected(nodes: AXTreeViewNode[]): void;
781
+ removeSelected(nodes: AXTreeViewNode[], selectedField?: string, indeterminateField?: string, childrenField?: string): void;
610
782
  /**
611
783
  * Recursively update all parent states in the tree (used after deletion)
612
784
  */
613
- updateAllParentStates(nodes: AXTreeViewNode[], intermediateState: boolean): void;
785
+ updateAllParentStates(nodes: AXTreeViewNode[], intermediateState: boolean, childrenField?: string, selectedField?: string, indeterminateField?: string): void;
614
786
  /**
615
787
  * Recursively set expanded state (with lazy loading)
616
788
  */
617
- setExpandedState(nodes: AXTreeViewNode[], expanded: boolean, isLazyDataSource: boolean, loadNodeChildren: (node: AXTreeViewNode) => Promise<void>): Promise<void>;
789
+ setExpandedState(nodes: AXTreeViewNode[], expanded: boolean, isLazyDataSource: boolean, loadNodeChildren: (node: AXTreeViewNode) => Promise<void>, expandedField?: string, childrenField?: string, childrenCountField?: string): Promise<void>;
618
790
  /**
619
791
  * Get array reference by drop list ID
620
792
  */
621
- getArrayByListId(nodes: AXTreeViewNode[], listId: string): AXTreeViewNode[] | null;
793
+ getArrayByListId(nodes: AXTreeViewNode[], listId: string, idField?: string, childrenField?: string): AXTreeViewNode[] | null;
622
794
  /**
623
795
  * Find parent node by list ID
624
796
  */
625
- findParentByListId(nodes: AXTreeViewNode[], listId: string): AXTreeViewNode | undefined;
797
+ findParentByListId(nodes: AXTreeViewNode[], listId: string, idField?: string): AXTreeViewNode | undefined;
626
798
  /**
627
799
  * Generate unique list ID for each node
628
800
  */
629
- getListId(node?: AXTreeViewNode): string;
801
+ getListId(node: AXTreeViewNode | undefined, idField?: string): string;
630
802
  /**
631
803
  * Get root list ID constant
632
804
  */
@@ -642,27 +814,81 @@ declare class AXTreeViewService {
642
814
  /**
643
815
  * Get all nodes in a flat array
644
816
  */
645
- getAllNodes(nodes: AXTreeViewNode[]): AXTreeViewNode[];
817
+ getAllNodes(nodes: AXTreeViewNode[], childrenField?: string): AXTreeViewNode[];
646
818
  /**
647
819
  * Get the path to a node (array of parent nodes from root to node)
648
820
  */
649
- getNodePath(nodes: AXTreeViewNode[], nodeId: string): AXTreeViewNode[];
821
+ getNodePath(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): AXTreeViewNode[];
650
822
  /**
651
823
  * Get the level/depth of a node (0 = root level)
652
824
  */
653
- getNodeLevel(nodes: AXTreeViewNode[], nodeId: string): number;
825
+ getNodeLevel(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): number;
654
826
  /**
655
827
  * Get sibling nodes of a given node
656
828
  */
657
- getSiblings(nodes: AXTreeViewNode[], nodeId: string): AXTreeViewNode[];
829
+ getSiblings(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string): AXTreeViewNode[];
658
830
  /**
659
831
  * Clone a node (creates a deep copy)
660
832
  */
661
- cloneNode(node: AXTreeViewNode): AXTreeViewNode;
833
+ cloneNode(node: AXTreeViewNode, idField?: string, titleField?: string, tooltipField?: string, iconField?: string, expandedField?: string, selectedField?: string, indeterminateField?: string, disabledField?: string, hiddenField?: string, childrenCountField?: string, dataField?: string, childrenField?: string): AXTreeViewNode;
834
+ /**
835
+ * Move a node to a new parent in the tree
836
+ * @param nodes - Root nodes array
837
+ * @param nodeId - The ID of the node to move
838
+ * @param newParentId - The ID of the new parent (undefined for root level)
839
+ * @param index - Optional index to insert at (default: append to end)
840
+ * @param idField - Field name for node ID
841
+ * @param childrenField - Field name for children array
842
+ * @param childrenCountField - Field name for children count
843
+ * @param expandedField - Field name for expanded state
844
+ * @returns Object with success status, moved node, previous parent, new parent, and indices
845
+ */
846
+ moveNode(nodes: AXTreeViewNode[], nodeId: string, newParentId: string | undefined, index: number | undefined, idField?: string, childrenField?: string, childrenCountField?: string, expandedField?: string): {
847
+ success: boolean;
848
+ movedNode?: AXTreeViewNode;
849
+ previousParent?: AXTreeViewNode;
850
+ newParent?: AXTreeViewNode;
851
+ previousIndex: number;
852
+ currentIndex: number;
853
+ };
854
+ /**
855
+ * Edit/update a node's properties
856
+ * @param nodes - Root nodes array
857
+ * @param nodeId - The ID of the node to edit
858
+ * @param updates - Partial node object with properties to update
859
+ * @param idField - Field name for node ID
860
+ * @param childrenField - Field name for children array
861
+ * @param childrenCountField - Field name for children count
862
+ * @returns The updated node if found, null otherwise
863
+ */
864
+ editNode(nodes: AXTreeViewNode[], nodeId: string, updates: Partial<AXTreeViewNode>, idField?: string, childrenField?: string, childrenCountField?: string): AXTreeViewNode | null;
865
+ /**
866
+ * Add a child node to a parent node
867
+ * @param nodes - Root nodes array
868
+ * @param parentId - The ID of the parent node
869
+ * @param childNode - The child node to add
870
+ * @param index - Optional index to insert at (default: append to end)
871
+ * @param idField - Field name for node ID
872
+ * @param childrenField - Field name for children array
873
+ * @param childrenCountField - Field name for children count
874
+ * @param expandedField - Field name for expanded state
875
+ * @returns The parent node if found and child was added, null otherwise
876
+ */
877
+ addChild(nodes: AXTreeViewNode[], parentId: string, childNode: AXTreeViewNode, index: number | undefined, idField?: string, childrenField?: string, childrenCountField?: string, expandedField?: string): AXTreeViewNode | null;
878
+ /**
879
+ * Remove a node from the tree
880
+ * @param nodes - Root nodes array
881
+ * @param nodeId - The ID of the node to remove
882
+ * @param idField - Field name for node ID
883
+ * @param childrenField - Field name for children array
884
+ * @param childrenCountField - Field name for children count
885
+ * @returns The removed node if found, null otherwise
886
+ */
887
+ removeNode(nodes: AXTreeViewNode[], nodeId: string, idField?: string, childrenField?: string, childrenCountField?: string): AXTreeViewNode | null;
662
888
  /**
663
889
  * Validate node structure (check for required fields and circular references)
664
890
  */
665
- validateNode(node: AXTreeViewNode, visitedIds?: Set<string>): {
891
+ validateNode(node: AXTreeViewNode, visitedIds?: Set<string>, idField?: string, titleField?: string, childrenField?: string, childrenCountField?: string): {
666
892
  valid: boolean;
667
893
  errors: string[];
668
894
  };
@@ -671,4 +897,4 @@ declare class AXTreeViewService {
671
897
  }
672
898
 
673
899
  export { AXTreeViewComponent, AXTreeViewModule, AXTreeViewService };
674
- export type { AXTreeViewBeforeDropEvent, AXTreeViewCallback, AXTreeViewChildrenSelectionState, AXTreeViewDataSource, AXTreeViewDragMode, AXTreeViewDragOperationType, AXTreeViewDropEvent, AXTreeViewFlatNode, AXTreeViewItemTemplateContext, AXTreeViewNode, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent, AXTreeViewSelectMode, AXTreeViewViewLook };
900
+ export type { AXTreeViewBeforeDropEvent, AXTreeViewCallback, AXTreeViewChildrenSelectionState, AXTreeViewDataSource, AXTreeViewDragArea, AXTreeViewDragBehavior, AXTreeViewDropEvent, AXTreeViewFlatNode, AXTreeViewItemTemplateContext, AXTreeViewNode, AXTreeViewNodeSelectEvent, AXTreeViewNodeToggleEvent, AXTreeViewSelectMode, AXTreeViewSelectionBehavior, AXTreeViewSelectionChangeEvent, AXTreeViewViewLook };
@@ -33,8 +33,8 @@ declare class AXWysiwygContainerComponent extends AXWysiwygContainerComponent_ba
33
33
  private container;
34
34
  private toolbar;
35
35
  private platformId;
36
- /** @ignore */
37
- protected changeHandler(): Promise<void>;
36
+ private changeHandlerTimer;
37
+ protected changeHandler(): void;
38
38
  /** @ignore */
39
39
  ngOnDestroy(): void;
40
40
  /**