Home Reference Source Test Repository

src/core/utils/waitForTransition.js

const onTransitionEndEventNames = "transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd";
// const onAnimationEndEventName = 'webkitAnimationEnd oanimationend msAnimationEnd animationend';

let waitForTransition = function($el, { fallbackTime = 10000 } = {}){
  return new Promise((resolve) => {

    let done = function(e){
      /*eslint no-use-before-define:0*/
      if(e && e.target !== $el.get(0)) {
        return;
      }

      resolve();

      $el.off(onTransitionEndEventNames, done);
      clearTimeout(fallBackTimer);
    };
    let fallBackTimer = setTimeout(done, fallbackTime);

    $el.on(onTransitionEndEventNames, done);
  });
};

module.exports = waitForTransition;