73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
import { getEventTarget } from "../utils/dom";
|
|
if (typeof window.CustomEvent !== "function") {
|
|
var CustomEvent_1 = function (typeArg, eventInitDict) {
|
|
eventInitDict = eventInitDict || {
|
|
bubbles: false,
|
|
cancelable: false,
|
|
detail: undefined,
|
|
};
|
|
var evt = document.createEvent("CustomEvent");
|
|
evt.initCustomEvent(typeArg, eventInitDict.bubbles, eventInitDict.cancelable, eventInitDict.detail);
|
|
return evt;
|
|
};
|
|
CustomEvent_1.prototype = window.Event.prototype;
|
|
window.CustomEvent = CustomEvent_1;
|
|
}
|
|
function delta(e) {
|
|
return Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));
|
|
}
|
|
var scroll = function (e) {
|
|
e.preventDefault();
|
|
var ev = new CustomEvent("increment", {
|
|
bubbles: true,
|
|
});
|
|
ev.delta = delta(e);
|
|
getEventTarget(e).dispatchEvent(ev);
|
|
};
|
|
function scrollMonth(fp) {
|
|
return function (e) {
|
|
e.preventDefault();
|
|
var mDelta = delta(e);
|
|
fp.changeMonth(mDelta);
|
|
};
|
|
}
|
|
function scrollPlugin() {
|
|
return function (fp) {
|
|
var monthScroller = scrollMonth(fp);
|
|
return {
|
|
onReady: function () {
|
|
if (fp.timeContainer) {
|
|
fp.timeContainer.addEventListener("wheel", scroll);
|
|
}
|
|
if (fp.yearElements) {
|
|
fp.yearElements.forEach(function (yearElem) {
|
|
return yearElem.addEventListener("wheel", scroll);
|
|
});
|
|
}
|
|
if (fp.monthElements) {
|
|
fp.monthElements.forEach(function (monthElem) {
|
|
return monthElem.addEventListener("wheel", monthScroller);
|
|
});
|
|
}
|
|
fp.loadedPlugins.push("scroll");
|
|
},
|
|
onDestroy: function () {
|
|
if (fp.timeContainer) {
|
|
fp.timeContainer.removeEventListener("wheel", scroll);
|
|
}
|
|
if (fp.yearElements) {
|
|
fp.yearElements.forEach(function (yearElem) {
|
|
return yearElem.removeEventListener("wheel", scroll);
|
|
});
|
|
}
|
|
if (fp.monthElements) {
|
|
fp.monthElements.forEach(function (monthElem) {
|
|
return monthElem.removeEventListener("wheel", monthScroller);
|
|
});
|
|
}
|
|
},
|
|
};
|
|
};
|
|
}
|
|
export default scrollPlugin;
|