59 lines
2.0 KiB
JavaScript
59 lines
2.0 KiB
JavaScript
|
(function (global, factory) {
|
||
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||
|
typeof define === 'function' && define.amd ? define(factory) :
|
||
|
(global = global || self, global.scrollPlugin = factory());
|
||
|
}(this, function () { 'use strict';
|
||
|
|
||
|
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);
|
||
|
e.target.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);
|
||
|
}
|
||
|
fp.yearElements.forEach(function (yearElem) {
|
||
|
return yearElem.addEventListener("wheel", scroll);
|
||
|
});
|
||
|
fp.monthElements.forEach(function (monthElem) {
|
||
|
return monthElem.addEventListener("wheel", monthScroller);
|
||
|
});
|
||
|
fp.loadedPlugins.push("scroll");
|
||
|
},
|
||
|
onDestroy: function () {
|
||
|
if (fp.timeContainer) {
|
||
|
fp.timeContainer.removeEventListener("wheel", scroll);
|
||
|
}
|
||
|
fp.yearElements.forEach(function (yearElem) {
|
||
|
return yearElem.removeEventListener("wheel", scroll);
|
||
|
});
|
||
|
fp.monthElements.forEach(function (monthElem) {
|
||
|
return monthElem.removeEventListener("wheel", monthScroller);
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return scrollPlugin;
|
||
|
|
||
|
}));
|