Skip to content

Instantly share code, notes, and snippets.

@mplatts
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mplatts/bdcaf06a1177d8113c4f to your computer and use it in GitHub Desktop.
Save mplatts/bdcaf06a1177d8113c4f to your computer and use it in GitHub Desktop.
animations 2 js version
var createHooks;
createHooks = function(options) {
options = _.defaults(options, {
alwaysClass: '',
onscreenClass: '',
offscreenClass: '',
removeClass: '',
removeTimeout: 500,
insertTimeout: 500
});
return {
transitioning: false,
insertElement: function(node, next) {
var finish, insert;
insert = function() {
$(node).addClass(options.onscreenClass);
$(node).insertBefore(next);
Meteor.setTimeout(finish, options.insertTimeout);
};
finish = function() {
$(node).removeClass(options.onscreenClass);
};
if (this.transitioning) {
Meteor.setTimeout(insert, options.removeTimeout);
} else {
insert();
}
},
removeElement: function(node) {
var remove;
remove = (function(_this) {
return function() {
_this.transitioning = false;
$(node).remove();
};
})(this);
if (options.removeClass.length) {
$(node).addClass(options.removeClass);
this.transitioning = true;
Meteor.setTimeout(remove, options.removeTimeout);
} else {
remove();
}
}
};
};
Template.transition.rendered = function() {
var type, types, _ref;
type = ((_ref = this.data) != null ? _ref.type : void 0) || 'fade';
types = {
fade: {
onscreenClass: 'fadeIn',
removeClass: 'fadeOut'
},
bounce: {
onscreenClass: 'bounceIn',
removeClass: 'bounceOut',
insertTimeout: 750,
removeTimeout: 750
},
slide: {
onscreenClass: 'slideInLeft',
removeClass: 'slideOutLeft'
}
};
this.firstNode.parentNode._uihooks = createHooks(types[type]);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment