This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/lib/after-transition.js.es6
2018-06-15 17:03:24 +02:00

33 lines
875 B
JavaScript

/**
CSS transitions are a PITA, often we need to queue some js after a transition, this helper ensures
it happens after the transition.
SO: http://stackoverflow.com/questions/9943435/css3-animation-end-techniques
**/
var dummy = document.createElement("div"),
eventNameHash = {
webkit: "webkitTransitionEnd",
Moz: "transitionend",
O: "oTransitionEnd",
ms: "MSTransitionEnd"
};
var transitionEnd = (function() {
var retValue;
retValue = "transitionend";
Object.keys(eventNameHash).some(function(vendor) {
if (vendor + "TransitionProperty" in dummy.style) {
retValue = eventNameHash[vendor];
return true;
}
});
return retValue;
})();
export default function(element, callback) {
return $(element).on(transitionEnd, event => {
if (event.target !== event.currentTarget) return;
return callback(event);
});
}