test(animations): properly reference body node for SSR environments (#23300)

PR Close #23300
This commit is contained in:
Matias Niemelä
2018-04-10 15:10:29 -07:00
committed by Miško Hevery
parent 5b76f04b7f
commit e8354edcd2
8 changed files with 32 additions and 19 deletions

View File

@ -25,9 +25,11 @@ export class AnimationEngine {
// this method is designed to be overridden by the code that uses this engine
public onRemovalComplete = (element: any, context: any) => {};
constructor(private _driver: AnimationDriver, normalizer: AnimationStyleNormalizer) {
this._transitionEngine = new TransitionAnimationEngine(_driver, normalizer);
this._timelineEngine = new TimelineAnimationEngine(_driver, normalizer);
constructor(
private bodyNode: any, private _driver: AnimationDriver,
normalizer: AnimationStyleNormalizer) {
this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, normalizer);
this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, normalizer);
this._transitionEngine.onRemovalComplete = (element: any, context: any) =>
this.onRemovalComplete(element, context);

View File

@ -25,7 +25,9 @@ export class TimelineAnimationEngine {
private _playersById: {[id: string]: AnimationPlayer} = {};
public players: AnimationPlayer[] = [];
constructor(private _driver: AnimationDriver, private _normalizer: AnimationStyleNormalizer) {}
constructor(
public bodyNode: any, private _driver: AnimationDriver,
private _normalizer: AnimationStyleNormalizer) {}
register(id: string, metadata: AnimationMetadata|AnimationMetadata[]) {
const errors: any[] = [];

View File

@ -16,7 +16,7 @@ import {AnimationStyleNormalizer} from '../dsl/style_normalization/animation_sty
import {ENTER_CLASSNAME, LEAVE_CLASSNAME, NG_ANIMATING_CLASSNAME, NG_ANIMATING_SELECTOR, NG_TRIGGER_CLASSNAME, NG_TRIGGER_SELECTOR, copyObj, eraseStyles, iteratorToArray, setStyles} from '../util';
import {AnimationDriver} from './animation_driver';
import {getBodyNode, getOrSetAsInMap, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';
import {getOrSetAsInMap, listenOnPlayer, makeAnimationEvent, normalizeKeyframes, optimizeGroupPlayer} from './shared';
const QUEUED_CLASSNAME = 'ng-animate-queued';
const QUEUED_SELECTOR = '.ng-animate-queued';
@ -530,7 +530,9 @@ export class TransitionAnimationEngine {
/** @internal */
_onRemovalComplete(element: any, context: any) { this.onRemovalComplete(element, context); }
constructor(public driver: AnimationDriver, private _normalizer: AnimationStyleNormalizer) {}
constructor(
public bodyNode: any, public driver: AnimationDriver,
private _normalizer: AnimationStyleNormalizer) {}
get queuedPlayers(): TransitionAnimationPlayer[] {
const players: TransitionAnimationPlayer[] = [];
@ -890,7 +892,7 @@ export class TransitionAnimationEngine {
}
});
const bodyNode = getBodyNode();
const bodyNode = this.bodyNode;
const allTriggerElements = Array.from(this.statesByElement.keys());
const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);