@@ -68,7 +68,9 @@ export abstract class UmbTreeItemContextBase<
68
68
#foldersOnly = new UmbBooleanState ( false ) ;
69
69
readonly foldersOnly = this . #foldersOnly. asObservable ( ) ;
70
70
71
- treeContext ?: UmbDefaultTreeContext < TreeItemType , TreeRootType > ;
71
+ public treeContext ?: UmbDefaultTreeContext < TreeItemType , TreeRootType > ;
72
+ public parentTreeItemContext ?: UmbTreeItemContext < TreeItemType > ;
73
+
72
74
#sectionContext?: typeof UMB_SECTION_CONTEXT . TYPE ;
73
75
#sectionSidebarContext?: typeof UMB_SECTION_SIDEBAR_CONTEXT . TYPE ;
74
76
#actionEventContext?: typeof UMB_ACTION_EVENT_CONTEXT . TYPE ;
@@ -87,24 +89,6 @@ export abstract class UmbTreeItemContextBase<
87
89
// listen for page changes on the pagination manager
88
90
this . pagination . addEventListener ( UmbChangeEvent . TYPE , this . #onPageChange) ;
89
91
90
- /* TODO: revisit. This is a temp solution to notify the parent it needs to reload its children
91
- there might be a better way to do this through a tree item parent context.
92
- It does not look like there is a way to have a "dynamic" parent context that will stop when a
93
- specific parent is reached (a tree item unique that matches the parentUnique of this item) */
94
- const hostElement = this . getHostElement ( ) ;
95
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
96
- // @ts -ignore
97
- hostElement . addEventListener ( 'temp-reload-tree-item-parent' , ( event : CustomEvent ) => {
98
- const treeItem = this . getTreeItem ( ) ;
99
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
100
- // @ts -ignore
101
- const unique = treeItem ?. unique ;
102
- if ( event . detail . unique === unique ) {
103
- event . stopPropagation ( ) ;
104
- this . loadChildren ( ) ;
105
- }
106
- } ) ;
107
-
108
92
window . addEventListener ( 'navigationend' , this . #debouncedCheckIsActive) ;
109
93
}
110
94
@@ -248,6 +232,10 @@ export abstract class UmbTreeItemContextBase<
248
232
this . #observeFoldersOnly( ) ;
249
233
} ) ;
250
234
235
+ this . consumeContext ( UMB_TREE_ITEM_CONTEXT , ( instance ) => {
236
+ this . parentTreeItemContext = instance ;
237
+ } ) . skipHost ( ) ;
238
+
251
239
this . consumeContext ( UMB_ACTION_EVENT_CONTEXT , ( instance ) => {
252
240
this . #removeEventListeners( ) ;
253
241
this . #actionEventContext = instance ;
@@ -353,19 +341,11 @@ export abstract class UmbTreeItemContextBase<
353
341
if ( event . getUnique ( ) !== this . unique ) return ;
354
342
if ( event . getEntityType ( ) !== this . entityType ) return ;
355
343
356
- /* TODO: revisit. This is a temp solution to notify the parent it needs to reload its children
357
- there might be a better way to do this through a tree item parent context.
358
- It does not look like there is a way to have a "dynamic" parent context that will stop when a
359
- specific parent is reached (a tree item unique that matches the parentUnique of this item) */
360
- const treeItem = this . getTreeItem ( ) ;
361
- const parentUnique = treeItem ?. parent . unique ;
362
-
363
- const customEvent = new CustomEvent ( 'temp-reload-tree-item-parent' , {
364
- detail : { unique : parentUnique } ,
365
- bubbles : true ,
366
- composed : true ,
367
- } ) ;
368
- this . getHostElement ( ) . dispatchEvent ( customEvent ) ;
344
+ if ( this . parentTreeItemContext ) {
345
+ this . parentTreeItemContext . loadChildren ( ) ;
346
+ } else {
347
+ this . treeContext ?. loadTree ( ) ;
348
+ }
369
349
} ;
370
350
371
351
#onPageChange = ( event : UmbChangeEvent ) => {
0 commit comments