metismenu
Version:
A collapsible jQuery menu plugin
61 lines (47 loc) • 1.19 kB
JavaScript
import $ from 'jquery';
const Util = (($) => {
const TRANSITION_END = 'transitionend';
const Util = {
TRANSITION_END: 'mmTransitionEnd',
triggerTransitionEnd(element) {
$(element).trigger(TRANSITION_END);
},
supportsTransitionEnd() {
return Boolean(TRANSITION_END);
},
};
function getSpecialTransitionEndEvent() {
return {
bindType: TRANSITION_END,
delegateType: TRANSITION_END,
handle(event) {
if ($(event.target).is(this)) {
return event
.handleObj
.handler
.apply(this, arguments);
}
return undefined;
},
};
}
function transitionEndEmulator(duration) {
let called = false;
$(this).one(Util.TRANSITION_END, () => {
called = true;
});
setTimeout(() => {
if (!called) {
Util.triggerTransitionEnd(this);
}
}, duration);
return this;
}
function setTransitionEndSupport() {
$.fn.mmEmulateTransitionEnd = transitionEndEmulator;
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
}
setTransitionEndSupport();
return Util;
})($);
export default Util;