A pure DOM predicate with no MJ, Explorer or routing coupling — which is why it lives here in a
Generic package rather than on SharedService. It was previously reachable only as
SharedService.IsDescendant, which meant a widget wanting this three-line tree walk had to take
a dependency on MJ Explorer to get it. That is exactly the accidental coupling the UI layering
rules exist to prevent (see guides/UI_LAYERING_GUIDE.md).
SharedService.IsDescendant delegates here, so existing Explorer callers are unaffected.
Parameters
parent: ElementRef<any>|null|undefined
the candidate ancestor
child: ElementRef<any>|null|undefined
the candidate descendant
Returns boolean
true when child is a descendant of parent; false when either is missing or unrelated
Is
childinsideparentin the DOM tree?A pure DOM predicate with no MJ, Explorer or routing coupling — which is why it lives here in a Generic package rather than on
SharedService. It was previously reachable only asSharedService.IsDescendant, which meant a widget wanting this three-line tree walk had to take a dependency on MJ Explorer to get it. That is exactly the accidental coupling the UI layering rules exist to prevent (seeguides/UI_LAYERING_GUIDE.md).SharedService.IsDescendantdelegates here, so existing Explorer callers are unaffected.