@memberjunction/ng-trees 0.0.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/events/tree-events.d.ts +267 -0
- package/dist/lib/events/tree-events.d.ts.map +1 -0
- package/dist/lib/events/tree-events.js +383 -0
- package/dist/lib/events/tree-events.js.map +1 -0
- package/dist/lib/models/tree-types.d.ts +254 -0
- package/dist/lib/models/tree-types.d.ts.map +1 -0
- package/dist/lib/models/tree-types.js +57 -0
- package/dist/lib/models/tree-types.js.map +1 -0
- package/dist/lib/ng-trees.module.d.ts +16 -0
- package/dist/lib/ng-trees.module.d.ts.map +1 -0
- package/dist/lib/ng-trees.module.js +47 -0
- package/dist/lib/ng-trees.module.js.map +1 -0
- package/dist/lib/tree/tree.component.d.ts +353 -0
- package/dist/lib/tree/tree.component.d.ts.map +1 -0
- package/dist/lib/tree/tree.component.js +1695 -0
- package/dist/lib/tree/tree.component.js.map +1 -0
- package/dist/lib/tree-dropdown/tree-dropdown.component.d.ts +295 -0
- package/dist/lib/tree-dropdown/tree-dropdown.component.d.ts.map +1 -0
- package/dist/lib/tree-dropdown/tree-dropdown.component.js +1012 -0
- package/dist/lib/tree-dropdown/tree-dropdown.component.js.map +1 -0
- package/dist/public-api.d.ts +9 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +16 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +40 -6
- package/README.md +0 -45
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tree Component for @memberjunction/ng-trees
|
|
3
|
+
*
|
|
4
|
+
* A generic, reusable tree component for displaying hierarchical entity data.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter, ChangeDetectorRef, OnInit, OnDestroy, ElementRef } from '@angular/core';
|
|
7
|
+
import { TreeNode, TreeBranchConfig, TreeLeafConfig, TreeSelectionMode, TreeSelectableTypes, TreeStyleConfig, TreeKeyboardConfig } from '../models/tree-types';
|
|
8
|
+
import { BeforeNodeSelectEventArgs, AfterNodeSelectEventArgs, BeforeNodeDeselectEventArgs, AfterNodeDeselectEventArgs, BeforeNodeExpandEventArgs, AfterNodeExpandEventArgs, BeforeNodeCollapseEventArgs, AfterNodeCollapseEventArgs, BeforeNodeClickEventArgs, AfterNodeClickEventArgs, BeforeNodeDoubleClickEventArgs, AfterNodeDoubleClickEventArgs, BeforeDataLoadEventArgs, AfterDataLoadEventArgs, BeforeKeyboardNavigateEventArgs, AfterKeyboardNavigateEventArgs } from '../events/tree-events';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export declare class TreeComponent implements OnInit, OnDestroy {
|
|
11
|
+
private readonly cdr;
|
|
12
|
+
private readonly elementRef;
|
|
13
|
+
/** Branch (category) entity configuration - REQUIRED */
|
|
14
|
+
private _branchConfig;
|
|
15
|
+
set BranchConfig(value: TreeBranchConfig);
|
|
16
|
+
get BranchConfig(): TreeBranchConfig;
|
|
17
|
+
/** Optional leaf entity configuration */
|
|
18
|
+
private _leafConfig?;
|
|
19
|
+
set LeafConfig(value: TreeLeafConfig | undefined);
|
|
20
|
+
get LeafConfig(): TreeLeafConfig | undefined;
|
|
21
|
+
/** Selection mode: 'single', 'multiple', or 'none' */
|
|
22
|
+
private _selectionMode;
|
|
23
|
+
set SelectionMode(value: TreeSelectionMode);
|
|
24
|
+
get SelectionMode(): TreeSelectionMode;
|
|
25
|
+
/** What types can be selected: 'branch', 'leaf', or 'both' */
|
|
26
|
+
private _selectableTypes;
|
|
27
|
+
set SelectableTypes(value: TreeSelectableTypes);
|
|
28
|
+
get SelectableTypes(): TreeSelectableTypes;
|
|
29
|
+
/** Initially selected node IDs */
|
|
30
|
+
private _selectedIDs;
|
|
31
|
+
set SelectedIDs(value: string[]);
|
|
32
|
+
get SelectedIDs(): string[];
|
|
33
|
+
/** Initially expanded node IDs (null = auto-expand first level) */
|
|
34
|
+
private _expandedIDs;
|
|
35
|
+
set ExpandedIDs(value: string[] | null);
|
|
36
|
+
get ExpandedIDs(): string[] | null;
|
|
37
|
+
/** Show expand/collapse all buttons */
|
|
38
|
+
private _showExpandCollapseAll;
|
|
39
|
+
set ShowExpandCollapseAll(value: boolean);
|
|
40
|
+
get ShowExpandCollapseAll(): boolean;
|
|
41
|
+
/** Enable keyboard navigation */
|
|
42
|
+
private _enableKeyboardNavigation;
|
|
43
|
+
set EnableKeyboardNavigation(value: boolean);
|
|
44
|
+
get EnableKeyboardNavigation(): boolean;
|
|
45
|
+
/** Keyboard configuration */
|
|
46
|
+
private _keyboardConfig;
|
|
47
|
+
set KeyboardConfig(value: TreeKeyboardConfig);
|
|
48
|
+
get KeyboardConfig(): TreeKeyboardConfig;
|
|
49
|
+
/** CSS style overrides */
|
|
50
|
+
private _styleConfig;
|
|
51
|
+
set StyleConfig(value: TreeStyleConfig);
|
|
52
|
+
get StyleConfig(): TreeStyleConfig;
|
|
53
|
+
/** Indent per level in pixels */
|
|
54
|
+
private _indentSize;
|
|
55
|
+
set IndentSize(value: number);
|
|
56
|
+
get IndentSize(): number;
|
|
57
|
+
/** Show loading indicator */
|
|
58
|
+
private _showLoading;
|
|
59
|
+
set ShowLoading(value: boolean);
|
|
60
|
+
get ShowLoading(): boolean;
|
|
61
|
+
/** Empty state message */
|
|
62
|
+
private _emptyMessage;
|
|
63
|
+
set EmptyMessage(value: string);
|
|
64
|
+
get EmptyMessage(): string;
|
|
65
|
+
/** Empty state icon */
|
|
66
|
+
private _emptyIcon;
|
|
67
|
+
set EmptyIcon(value: string);
|
|
68
|
+
get EmptyIcon(): string;
|
|
69
|
+
/** Auto-load data on init */
|
|
70
|
+
private _autoLoad;
|
|
71
|
+
set AutoLoad(value: boolean);
|
|
72
|
+
get AutoLoad(): boolean;
|
|
73
|
+
/** Show node icons */
|
|
74
|
+
private _showIcons;
|
|
75
|
+
set ShowIcons(value: boolean);
|
|
76
|
+
get ShowIcons(): boolean;
|
|
77
|
+
/** Show node descriptions */
|
|
78
|
+
private _showDescriptions;
|
|
79
|
+
set ShowDescriptions(value: boolean);
|
|
80
|
+
get ShowDescriptions(): boolean;
|
|
81
|
+
/** Show node badges */
|
|
82
|
+
private _showBadges;
|
|
83
|
+
set ShowBadges(value: boolean);
|
|
84
|
+
get ShowBadges(): boolean;
|
|
85
|
+
/** Animate expand/collapse */
|
|
86
|
+
private _animateExpandCollapse;
|
|
87
|
+
set AnimateExpandCollapse(value: boolean);
|
|
88
|
+
get AnimateExpandCollapse(): boolean;
|
|
89
|
+
BeforeNodeSelect: EventEmitter<BeforeNodeSelectEventArgs>;
|
|
90
|
+
AfterNodeSelect: EventEmitter<AfterNodeSelectEventArgs>;
|
|
91
|
+
BeforeNodeDeselect: EventEmitter<BeforeNodeDeselectEventArgs>;
|
|
92
|
+
AfterNodeDeselect: EventEmitter<AfterNodeDeselectEventArgs>;
|
|
93
|
+
BeforeNodeExpand: EventEmitter<BeforeNodeExpandEventArgs>;
|
|
94
|
+
AfterNodeExpand: EventEmitter<AfterNodeExpandEventArgs>;
|
|
95
|
+
BeforeNodeCollapse: EventEmitter<BeforeNodeCollapseEventArgs>;
|
|
96
|
+
AfterNodeCollapse: EventEmitter<AfterNodeCollapseEventArgs>;
|
|
97
|
+
BeforeNodeClick: EventEmitter<BeforeNodeClickEventArgs>;
|
|
98
|
+
AfterNodeClick: EventEmitter<AfterNodeClickEventArgs>;
|
|
99
|
+
BeforeNodeDoubleClick: EventEmitter<BeforeNodeDoubleClickEventArgs>;
|
|
100
|
+
AfterNodeDoubleClick: EventEmitter<AfterNodeDoubleClickEventArgs>;
|
|
101
|
+
BeforeDataLoad: EventEmitter<BeforeDataLoadEventArgs>;
|
|
102
|
+
AfterDataLoad: EventEmitter<AfterDataLoadEventArgs>;
|
|
103
|
+
BeforeKeyboardNavigate: EventEmitter<BeforeKeyboardNavigateEventArgs>;
|
|
104
|
+
AfterKeyboardNavigate: EventEmitter<AfterKeyboardNavigateEventArgs>;
|
|
105
|
+
/** Emitted when selection changes (convenience event with just the selected nodes) */
|
|
106
|
+
SelectionChange: EventEmitter<TreeNode[]>;
|
|
107
|
+
/** Root nodes of the tree */
|
|
108
|
+
Nodes: TreeNode[];
|
|
109
|
+
/** All branch nodes (flat) */
|
|
110
|
+
AllBranches: TreeNode[];
|
|
111
|
+
/** All leaf nodes (flat) */
|
|
112
|
+
AllLeaves: TreeNode[];
|
|
113
|
+
/** Currently selected nodes */
|
|
114
|
+
SelectedNodes: TreeNode[];
|
|
115
|
+
/** Currently focused node (for keyboard navigation) */
|
|
116
|
+
FocusedNode: TreeNode | null;
|
|
117
|
+
/** Loading state */
|
|
118
|
+
IsLoading: boolean;
|
|
119
|
+
/** Error message if load failed */
|
|
120
|
+
ErrorMessage: string | null;
|
|
121
|
+
/** Has data been loaded */
|
|
122
|
+
IsLoaded: boolean;
|
|
123
|
+
/** Current search text (for highlighting) */
|
|
124
|
+
CurrentSearchText: string;
|
|
125
|
+
private nodeMap;
|
|
126
|
+
private isInitialized;
|
|
127
|
+
private isCurrentlyLoading;
|
|
128
|
+
/** Instance-level cache for loaded data */
|
|
129
|
+
private cachedNodes;
|
|
130
|
+
private cachedBranches;
|
|
131
|
+
private cachedLeaves;
|
|
132
|
+
constructor(cdr: ChangeDetectorRef, elementRef: ElementRef);
|
|
133
|
+
ngOnInit(): void;
|
|
134
|
+
ngOnDestroy(): void;
|
|
135
|
+
/**
|
|
136
|
+
* Reload tree data (forces fresh load from database)
|
|
137
|
+
*/
|
|
138
|
+
Refresh(): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Get currently selected nodes
|
|
141
|
+
*/
|
|
142
|
+
GetSelectedNodes(): TreeNode[];
|
|
143
|
+
/**
|
|
144
|
+
* Get selected IDs
|
|
145
|
+
*/
|
|
146
|
+
GetSelectedIDs(): string[];
|
|
147
|
+
/**
|
|
148
|
+
* Programmatically select node(s)
|
|
149
|
+
* @param emitChange Whether to emit SelectionChange event (default: true).
|
|
150
|
+
* Set to false during sync operations to avoid unnecessary events.
|
|
151
|
+
*/
|
|
152
|
+
SelectNodes(ids: string[], emitChange?: boolean): void;
|
|
153
|
+
/**
|
|
154
|
+
* Clear selection
|
|
155
|
+
*/
|
|
156
|
+
ClearSelection(): void;
|
|
157
|
+
/**
|
|
158
|
+
* Expand all nodes
|
|
159
|
+
*/
|
|
160
|
+
ExpandAll(): void;
|
|
161
|
+
/**
|
|
162
|
+
* Collapse all nodes
|
|
163
|
+
*/
|
|
164
|
+
CollapseAll(): void;
|
|
165
|
+
/**
|
|
166
|
+
* Expand to specific node (expands all ancestors)
|
|
167
|
+
*/
|
|
168
|
+
ExpandToNode(id: string): TreeNode | null;
|
|
169
|
+
/**
|
|
170
|
+
* Find node by ID
|
|
171
|
+
*/
|
|
172
|
+
FindNode(id: string): TreeNode | null;
|
|
173
|
+
/**
|
|
174
|
+
* Get all nodes matching a predicate
|
|
175
|
+
*/
|
|
176
|
+
FindNodes(predicate: (node: TreeNode) => boolean): TreeNode[];
|
|
177
|
+
/**
|
|
178
|
+
* Filter nodes by search text
|
|
179
|
+
*/
|
|
180
|
+
FilterNodes(searchText: string, options?: {
|
|
181
|
+
caseSensitive?: boolean;
|
|
182
|
+
searchBranches?: boolean;
|
|
183
|
+
searchLeaves?: boolean;
|
|
184
|
+
searchDescription?: boolean;
|
|
185
|
+
}): TreeNode[];
|
|
186
|
+
/**
|
|
187
|
+
* Clear cache (call before Refresh if you want fresh data)
|
|
188
|
+
*/
|
|
189
|
+
ClearCache(): void;
|
|
190
|
+
/**
|
|
191
|
+
* Handle node click
|
|
192
|
+
*/
|
|
193
|
+
onNodeClick(node: TreeNode, event: MouseEvent): void;
|
|
194
|
+
/**
|
|
195
|
+
* Handle node double-click
|
|
196
|
+
*/
|
|
197
|
+
onNodeDoubleClick(node: TreeNode, event: MouseEvent): void;
|
|
198
|
+
/**
|
|
199
|
+
* Handle toggle click
|
|
200
|
+
*/
|
|
201
|
+
onToggleClick(node: TreeNode, event: MouseEvent): void;
|
|
202
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
203
|
+
/**
|
|
204
|
+
* Load tree data
|
|
205
|
+
*/
|
|
206
|
+
private loadData;
|
|
207
|
+
/**
|
|
208
|
+
* Load branch entities from database
|
|
209
|
+
*/
|
|
210
|
+
private loadBranches;
|
|
211
|
+
/**
|
|
212
|
+
* Load leaf entities from database
|
|
213
|
+
*/
|
|
214
|
+
private loadLeaves;
|
|
215
|
+
/**
|
|
216
|
+
* Load junction mappings for M2M relationships.
|
|
217
|
+
* Returns a map of leafId -> branchIds[]
|
|
218
|
+
*/
|
|
219
|
+
private loadJunctionMappings;
|
|
220
|
+
/**
|
|
221
|
+
* Build branch hierarchy from flat data
|
|
222
|
+
*/
|
|
223
|
+
private buildBranchHierarchy;
|
|
224
|
+
/**
|
|
225
|
+
* Attach leaf nodes to their parent branches or root level.
|
|
226
|
+
* Supports both direct parent field relationships and M2M junction mappings.
|
|
227
|
+
*
|
|
228
|
+
* @param rootNodes Root nodes to attach orphan leaves to
|
|
229
|
+
* @param branchMap Map of branch IDs to branch nodes
|
|
230
|
+
* @param leafData Raw leaf data from database
|
|
231
|
+
* @param config Leaf configuration
|
|
232
|
+
* @param junctionMappings Optional M2M mappings (leafId -> branchIds[])
|
|
233
|
+
*/
|
|
234
|
+
private attachLeavesToBranches;
|
|
235
|
+
/**
|
|
236
|
+
* Calculate node level in hierarchy
|
|
237
|
+
*/
|
|
238
|
+
private calculateLevel;
|
|
239
|
+
/**
|
|
240
|
+
* Sort children recursively (alphabetically)
|
|
241
|
+
*/
|
|
242
|
+
private sortChildrenRecursive;
|
|
243
|
+
/**
|
|
244
|
+
* Sort children: branches first (alphabetically), then leaves (alphabetically)
|
|
245
|
+
*/
|
|
246
|
+
private sortChildrenByTypeAndName;
|
|
247
|
+
/**
|
|
248
|
+
* Get icon for a node from field or default
|
|
249
|
+
*/
|
|
250
|
+
private getNodeIcon;
|
|
251
|
+
/**
|
|
252
|
+
* Get color for a node from field or default
|
|
253
|
+
*/
|
|
254
|
+
private getNodeColor;
|
|
255
|
+
/**
|
|
256
|
+
* Clear instance cache
|
|
257
|
+
*/
|
|
258
|
+
private clearCache;
|
|
259
|
+
/**
|
|
260
|
+
* Deep clone tree nodes
|
|
261
|
+
*/
|
|
262
|
+
private cloneNodes;
|
|
263
|
+
private cloneNode;
|
|
264
|
+
/**
|
|
265
|
+
* Build a flat map of all nodes by ID
|
|
266
|
+
*/
|
|
267
|
+
private buildNodeMap;
|
|
268
|
+
private addNodesToMapRecursive;
|
|
269
|
+
/**
|
|
270
|
+
* Apply initial expansion state
|
|
271
|
+
*/
|
|
272
|
+
private applyInitialExpansion;
|
|
273
|
+
/**
|
|
274
|
+
* Sync selection state from SelectedIDs input
|
|
275
|
+
*/
|
|
276
|
+
private syncSelectionFromIDs;
|
|
277
|
+
/**
|
|
278
|
+
* Check if a node can be selected based on SelectableTypes
|
|
279
|
+
*/
|
|
280
|
+
private isNodeSelectable;
|
|
281
|
+
/**
|
|
282
|
+
* Handle node selection logic
|
|
283
|
+
*/
|
|
284
|
+
private handleNodeSelection;
|
|
285
|
+
/**
|
|
286
|
+
* Toggle node expansion
|
|
287
|
+
*/
|
|
288
|
+
private toggleNodeExpansion;
|
|
289
|
+
/**
|
|
290
|
+
* Expand a node
|
|
291
|
+
*/
|
|
292
|
+
private expandNode;
|
|
293
|
+
/**
|
|
294
|
+
* Collapse a node
|
|
295
|
+
*/
|
|
296
|
+
private collapseNode;
|
|
297
|
+
/**
|
|
298
|
+
* Expand all nodes recursively
|
|
299
|
+
*/
|
|
300
|
+
private expandAllRecursive;
|
|
301
|
+
/**
|
|
302
|
+
* Collapse all nodes recursively
|
|
303
|
+
*/
|
|
304
|
+
private collapseAllRecursive;
|
|
305
|
+
/**
|
|
306
|
+
* Get all visible nodes in tree order
|
|
307
|
+
*/
|
|
308
|
+
private getVisibleNodesInOrder;
|
|
309
|
+
private collectVisibleNodesRecursive;
|
|
310
|
+
/**
|
|
311
|
+
* Scroll a node into view
|
|
312
|
+
*/
|
|
313
|
+
private scrollNodeIntoView;
|
|
314
|
+
/**
|
|
315
|
+
* Set visibility recursively
|
|
316
|
+
*/
|
|
317
|
+
private setVisibilityRecursive;
|
|
318
|
+
/**
|
|
319
|
+
* Recursively mark nodes that match the search
|
|
320
|
+
*/
|
|
321
|
+
private markMatchingNodesRecursive;
|
|
322
|
+
/**
|
|
323
|
+
* Make ancestors of visible nodes also visible
|
|
324
|
+
*/
|
|
325
|
+
private makeAncestorsVisibleRecursive;
|
|
326
|
+
/**
|
|
327
|
+
* Get the padding for a node based on its level
|
|
328
|
+
*/
|
|
329
|
+
getNodePadding(node: TreeNode): string;
|
|
330
|
+
/**
|
|
331
|
+
* Get CSS classes for a node
|
|
332
|
+
*/
|
|
333
|
+
getNodeClasses(node: TreeNode): Record<string, boolean>;
|
|
334
|
+
/**
|
|
335
|
+
* Get container classes
|
|
336
|
+
*/
|
|
337
|
+
getContainerClasses(): Record<string, boolean>;
|
|
338
|
+
/**
|
|
339
|
+
* Track nodes for ngFor
|
|
340
|
+
*/
|
|
341
|
+
trackNode(index: number, node: TreeNode): string;
|
|
342
|
+
/**
|
|
343
|
+
* Get label HTML with search text highlighted
|
|
344
|
+
*/
|
|
345
|
+
getHighlightedLabel(node: TreeNode): string;
|
|
346
|
+
/**
|
|
347
|
+
* Escape HTML special characters to prevent XSS
|
|
348
|
+
*/
|
|
349
|
+
private escapeHtml;
|
|
350
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
|
|
351
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent, "mj-tree", never, { "BranchConfig": { "alias": "BranchConfig"; "required": false; }; "LeafConfig": { "alias": "LeafConfig"; "required": false; }; "SelectionMode": { "alias": "SelectionMode"; "required": false; }; "SelectableTypes": { "alias": "SelectableTypes"; "required": false; }; "SelectedIDs": { "alias": "SelectedIDs"; "required": false; }; "ExpandedIDs": { "alias": "ExpandedIDs"; "required": false; }; "ShowExpandCollapseAll": { "alias": "ShowExpandCollapseAll"; "required": false; }; "EnableKeyboardNavigation": { "alias": "EnableKeyboardNavigation"; "required": false; }; "KeyboardConfig": { "alias": "KeyboardConfig"; "required": false; }; "StyleConfig": { "alias": "StyleConfig"; "required": false; }; "IndentSize": { "alias": "IndentSize"; "required": false; }; "ShowLoading": { "alias": "ShowLoading"; "required": false; }; "EmptyMessage": { "alias": "EmptyMessage"; "required": false; }; "EmptyIcon": { "alias": "EmptyIcon"; "required": false; }; "AutoLoad": { "alias": "AutoLoad"; "required": false; }; "ShowIcons": { "alias": "ShowIcons"; "required": false; }; "ShowDescriptions": { "alias": "ShowDescriptions"; "required": false; }; "ShowBadges": { "alias": "ShowBadges"; "required": false; }; "AnimateExpandCollapse": { "alias": "AnimateExpandCollapse"; "required": false; }; }, { "BeforeNodeSelect": "BeforeNodeSelect"; "AfterNodeSelect": "AfterNodeSelect"; "BeforeNodeDeselect": "BeforeNodeDeselect"; "AfterNodeDeselect": "AfterNodeDeselect"; "BeforeNodeExpand": "BeforeNodeExpand"; "AfterNodeExpand": "AfterNodeExpand"; "BeforeNodeCollapse": "BeforeNodeCollapse"; "AfterNodeCollapse": "AfterNodeCollapse"; "BeforeNodeClick": "BeforeNodeClick"; "AfterNodeClick": "AfterNodeClick"; "BeforeNodeDoubleClick": "BeforeNodeDoubleClick"; "AfterNodeDoubleClick": "AfterNodeDoubleClick"; "BeforeDataLoad": "BeforeDataLoad"; "AfterDataLoad": "AfterDataLoad"; "BeforeKeyboardNavigate": "BeforeKeyboardNavigate"; "AfterKeyboardNavigate": "AfterKeyboardNavigate"; "SelectionChange": "SelectionChange"; }, never, never, false, never>;
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=tree.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.component.d.ts","sourceRoot":"","sources":["../../../src/lib/tree/tree.component.ts"],"names":[],"mappings":"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"}
|