maycur-business
Version:
maycur business react components of web
48 lines (37 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = onTransitionEnd;
var _globals = require("./globals");
var _getInnerElements2 = _interopRequireDefault(require("../utils/getInnerElements"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Prepares the callback functions for `show` and `hide` methods
* @param {Object} data
* @param {Number} duration
* @param {Function} callback - callback function to fire once transitions complete
*/
function onTransitionEnd(data, duration, callback) {
// Make callback synchronous if duration is 0
if (!duration) {
return callback();
}
var _getInnerElements = (0, _getInnerElements2["default"])(data.popper),
tooltip = _getInnerElements.tooltip;
var transitionendFired = false;
var listenerCallback = function listenerCallback(e) {
if (e.target === tooltip && !transitionendFired) {
transitionendFired = true;
callback();
}
}; // Fire callback upon transition completion
tooltip.addEventListener('webkitTransitionEnd', listenerCallback);
tooltip.addEventListener('transitionend', listenerCallback); // Fallback: transitionend listener sometimes may not fire
clearTimeout(data._transitionendTimeout);
data._transitionendTimeout = setTimeout(function () {
if (!transitionendFired) {
callback();
}
}, duration);
}