fix(ivy): ensure element removal triggers host removal animations (#28162)
Prior to this fix Ivy would not execute any animation triggers that exist as host bindings on an element if it is removed by the parent template. PR Close #28162
This commit is contained in:

committed by
Alex Rickabaugh

parent
e172e97e13
commit
5a582a8afd
@ -66,8 +66,8 @@ export class AnimationEngine {
|
||||
this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);
|
||||
}
|
||||
|
||||
onRemove(namespaceId: string, element: any, context: any): void {
|
||||
this._transitionEngine.removeNode(namespaceId, element, context);
|
||||
onRemove(namespaceId: string, element: any, context: any, isHostElement?: boolean): void {
|
||||
this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);
|
||||
}
|
||||
|
||||
disableAnimations(element: any, disable: boolean) {
|
||||
|
@ -708,17 +708,23 @@ export class TransitionAnimationEngine {
|
||||
}
|
||||
}
|
||||
|
||||
removeNode(namespaceId: string, element: any, context: any): void {
|
||||
if (!isElementNode(element)) {
|
||||
this._onRemovalComplete(element, context);
|
||||
return;
|
||||
}
|
||||
removeNode(namespaceId: string, element: any, isHostElement: boolean, context: any): void {
|
||||
if (isElementNode(element)) {
|
||||
const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;
|
||||
if (ns) {
|
||||
ns.removeNode(element, context);
|
||||
} else {
|
||||
this.markElementAsRemoved(namespaceId, element, false, context);
|
||||
}
|
||||
|
||||
const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;
|
||||
if (ns) {
|
||||
ns.removeNode(element, context);
|
||||
if (isHostElement) {
|
||||
const hostNS = this.namespacesByHostElement.get(element);
|
||||
if (hostNS && hostNS.id !== namespaceId) {
|
||||
hostNS.removeNode(element, context);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.markElementAsRemoved(namespaceId, element, false, context);
|
||||
this._onRemovalComplete(element, context);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user