Skip to content

Commit

Permalink
fix(instance): ensure callback returns DI instance
Browse files Browse the repository at this point in the history
This fixes proper instance passings for the callback during configuration phase. Additionally left/entered classes are removed properly before executing the next animation.
  • Loading branch information
zewa666 committed Jun 1, 2015
1 parent 6779c9f commit 06b2069
Show file tree
Hide file tree
Showing 11 changed files with 101 additions and 15 deletions.
14 changes: 12 additions & 2 deletions dist/amd/animator.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ define(['exports'], function (exports) {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this.useAnimationDoneClasses) {
classList.remove(_this.animationEnteredClass);
classList.remove(_this.animationLeftClass);
}

classList.add('au-enter');

var animStart;
Expand All @@ -88,7 +93,7 @@ define(['exports'], function (exports) {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this.useAnimationDoneClasses) {
if (_this.useAnimationDoneClasses && _this.animationEnteredClass !== undefined && _this.animationEnteredClass !== null) {
classList.add(_this.animationEnteredClass);
}

Expand Down Expand Up @@ -130,6 +135,11 @@ define(['exports'], function (exports) {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this2.useAnimationDoneClasses) {
classList.remove(_this2.animationEnteredClass);
classList.remove(_this2.animationLeftClass);
}

classList.add('au-leave');

var animStart;
Expand All @@ -149,7 +159,7 @@ define(['exports'], function (exports) {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this2.useAnimationDoneClasses) {
if (_this2.useAnimationDoneClasses && _this2.animationLeftClass !== undefined && _this2.animationLeftClass !== null) {
classList.add(_this2.animationLeftClass);
}

Expand Down
2 changes: 1 addition & 1 deletion dist/amd/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ define(['exports', 'aurelia-templating', './animator'], function (exports, _aure
function configure(aurelia, cb) {
var animator = new _animator.CssAnimator();
_aureliaTemplating.Animator.configureDefault(aurelia.container, animator);
cb(animator);
cb(aurelia.container.get(_animator.CssAnimator));
}
});
14 changes: 12 additions & 2 deletions dist/commonjs/animator.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ var CssAnimator = (function () {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this.useAnimationDoneClasses) {
classList.remove(_this.animationEnteredClass);
classList.remove(_this.animationLeftClass);
}

classList.add('au-enter');

var animStart;
Expand All @@ -87,7 +92,7 @@ var CssAnimator = (function () {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this.useAnimationDoneClasses) {
if (_this.useAnimationDoneClasses && _this.animationEnteredClass !== undefined && _this.animationEnteredClass !== null) {
classList.add(_this.animationEnteredClass);
}

Expand Down Expand Up @@ -129,6 +134,11 @@ var CssAnimator = (function () {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this2.useAnimationDoneClasses) {
classList.remove(_this2.animationEnteredClass);
classList.remove(_this2.animationLeftClass);
}

classList.add('au-leave');

var animStart;
Expand All @@ -148,7 +158,7 @@ var CssAnimator = (function () {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this2.useAnimationDoneClasses) {
if (_this2.useAnimationDoneClasses && _this2.animationLeftClass !== undefined && _this2.animationLeftClass !== null) {
classList.add(_this2.animationLeftClass);
}

Expand Down
2 changes: 1 addition & 1 deletion dist/commonjs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ exports.CssAnimator = _CssAnimator.CssAnimator;
function configure(aurelia, cb) {
var animator = new _CssAnimator.CssAnimator();
_Animator.Animator.configureDefault(aurelia.container, animator);
cb(animator);
cb(aurelia.container.get(_CssAnimator.CssAnimator));
}
20 changes: 18 additions & 2 deletions dist/es6/animator.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ export class CssAnimator {
var animId = element.toString() + Math.random(),
classList = element.classList;

// Step 1.1: remove done classes
if(this.useAnimationDoneClasses) {
classList.remove(this.animationEnteredClass);
classList.remove(this.animationLeftClass);
}

// Step 2: Add animation preparation class
classList.add('au-enter');

Expand Down Expand Up @@ -88,7 +94,9 @@ export class CssAnimator {
evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

// Step 3.2.4 in case animation done animations are active, add the defined entered class to the element
if(this.useAnimationDoneClasses) {
if(this.useAnimationDoneClasses &&
this.animationEnteredClass !== undefined &&
this.animationEnteredClass !== null) {
classList.add(this.animationEnteredClass);
}

Expand Down Expand Up @@ -134,6 +142,12 @@ export class CssAnimator {
var animId = element.toString() + Math.random(),
classList = element.classList;

// Step 1.1: remove done classes
if(this.useAnimationDoneClasses) {
classList.remove(this.animationEnteredClass);
classList.remove(this.animationLeftClass);
}

// Step 2: Add animation preparation class
classList.add('au-leave');

Expand Down Expand Up @@ -163,7 +177,9 @@ export class CssAnimator {
evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

// Step 3.2.4 in case animation done animations are active, add the defined left class to the element
if(this.useAnimationDoneClasses) {
if(this.useAnimationDoneClasses &&
this.animationLeftClass !== undefined &&
this.animationLeftClass !== null) {
classList.add(this.animationLeftClass);
}

Expand Down
2 changes: 1 addition & 1 deletion dist/es6/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ export {CssAnimator} from './animator';
export function configure(aurelia, cb){
var animator = new CssAnimator();
Animator.configureDefault(aurelia.container, animator);
cb(animator);
cb(aurelia.container.get(CssAnimator));
}
14 changes: 12 additions & 2 deletions dist/system/animator.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ System.register([], function (_export) {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this.useAnimationDoneClasses) {
classList.remove(_this.animationEnteredClass);
classList.remove(_this.animationLeftClass);
}

classList.add('au-enter');

var animStart;
Expand All @@ -91,7 +96,7 @@ System.register([], function (_export) {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this.useAnimationDoneClasses) {
if (_this.useAnimationDoneClasses && _this.animationEnteredClass !== undefined && _this.animationEnteredClass !== null) {
classList.add(_this.animationEnteredClass);
}

Expand Down Expand Up @@ -133,6 +138,11 @@ System.register([], function (_export) {
var animId = element.toString() + Math.random(),
classList = element.classList;

if (_this2.useAnimationDoneClasses) {
classList.remove(_this2.animationEnteredClass);
classList.remove(_this2.animationLeftClass);
}

classList.add('au-leave');

var animStart;
Expand All @@ -152,7 +162,7 @@ System.register([], function (_export) {

evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

if (_this2.useAnimationDoneClasses) {
if (_this2.useAnimationDoneClasses && _this2.animationLeftClass !== undefined && _this2.animationLeftClass !== null) {
classList.add(_this2.animationLeftClass);
}

Expand Down
2 changes: 1 addition & 1 deletion dist/system/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ System.register(['aurelia-templating', './animator'], function (_export) {
function configure(aurelia, cb) {
var animator = new CssAnimator();
Animator.configureDefault(aurelia.container, animator);
cb(animator);
cb(aurelia.container.get(CssAnimator));
}

return {
Expand Down
20 changes: 18 additions & 2 deletions src/animator.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ export class CssAnimator {
var animId = element.toString() + Math.random(),
classList = element.classList;

// Step 1.1: remove done classes
if(this.useAnimationDoneClasses) {
classList.remove(this.animationEnteredClass);
classList.remove(this.animationLeftClass);
}

// Step 2: Add animation preparation class
classList.add('au-enter');

Expand Down Expand Up @@ -88,7 +94,9 @@ export class CssAnimator {
evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

// Step 3.2.4 in case animation done animations are active, add the defined entered class to the element
if(this.useAnimationDoneClasses) {
if(this.useAnimationDoneClasses &&
this.animationEnteredClass !== undefined &&
this.animationEnteredClass !== null) {
classList.add(this.animationEnteredClass);
}

Expand Down Expand Up @@ -134,6 +142,12 @@ export class CssAnimator {
var animId = element.toString() + Math.random(),
classList = element.classList;

// Step 1.1: remove done classes
if(this.useAnimationDoneClasses) {
classList.remove(this.animationEnteredClass);
classList.remove(this.animationLeftClass);
}

// Step 2: Add animation preparation class
classList.add('au-leave');

Expand Down Expand Up @@ -163,7 +177,9 @@ export class CssAnimator {
evAnimEnd.target.removeEventListener(evAnimEnd.type, animEnd);

// Step 3.2.4 in case animation done animations are active, add the defined left class to the element
if(this.useAnimationDoneClasses) {
if(this.useAnimationDoneClasses &&
this.animationLeftClass !== undefined &&
this.animationLeftClass !== null) {
classList.add(this.animationLeftClass);
}

Expand Down
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ export {CssAnimator} from './animator';
export function configure(aurelia, cb){
var animator = new CssAnimator();
Animator.configureDefault(aurelia.container, animator);
cb(animator);
cb(aurelia.container.get(CssAnimator));
}
24 changes: 24 additions & 0 deletions test/animator.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,18 @@ describe('animator-css', () => {
done();
});
});

it('should not add undefined done class', (done) => {
sut.useAnimationDoneClasses = true;
sut.animationEnteredClass = undefined;

var elem = $('.animated-item').eq(0)[0];

sut.enter(elem).then( () => {
expect(elem.classList.contains("undefined")).toBe(false);
done();
});
});
});

describe('leave animation', () => {
Expand Down Expand Up @@ -187,6 +199,18 @@ describe('animator-css', () => {
done();
});
});

it('should not add undefined done class', (done) => {
sut.useAnimationDoneClasses = true;
sut.animationLeftClass = undefined;

var elem = $('.animated-item').eq(0)[0];

sut.leave(elem).then( () => {
expect(elem.classList.contains("undefined")).toBe(false);
done();
});
});
});

describe('removeClass animation', () => {
Expand Down

0 comments on commit 06b2069

Please sign in to comment.