From ea4d56c68b2396d3b2f9051b29cb2dc2848bc6f9 Mon Sep 17 00:00:00 2001 From: yotamberk Date: Fri, 21 Oct 2016 16:48:49 +0300 Subject: [PATCH] vertical scroll when zoomKey isn't triggered (#2197) * Hide vertically hidden ranged items in groups that are not visible * Add vertical scroll when zoom is inactive * Fix review comments --- lib/timeline/Core.js | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/timeline/Core.js b/lib/timeline/Core.js index cca32f9c..7b5be3e6 100644 --- a/lib/timeline/Core.js +++ b/lib/timeline/Core.js @@ -157,9 +157,41 @@ Core.prototype._create = function (container) { if (me.isActive()) { me.emit('mousewheel', event); } + + // prevent scrolling when zoomKey defined or activated + if (!me.options.zoomKey || event[me.options.zoomKey]) return + + var delta = 0; + if (event.wheelDelta) { /* IE/Opera. */ + delta = event.wheelDelta / 120; + } else if (event.detail) { /* Mozilla case. */ + // In Mozilla, sign of delta is different than in IE. + // Also, delta is multiple of 3. + delta = -event.detail / 3; + } + + var current = me.props.scrollTop; + var adjusted = current + delta * 120; + if (me.isActive()) { + me._setScrollTop(adjusted); + me._redraw(); + me.emit('scroll', event); + } + + // Prevent default actions caused by mouse wheel + // (else the page and timeline both scroll) + event.preventDefault(); + } + + if (this.dom.root.addEventListener) { + // IE9, Chrome, Safari, Opera + this.dom.root.addEventListener("mousewheel", onMouseWheel, false); + // Firefox + this.dom.root.addEventListener("DOMMouseScroll", onMouseWheel, false); + } else { + // IE 6/7/8 + this.dom.root.attachEvent("onmousewheel", onMouseWheel); } - this.dom.root.addEventListener('mousewheel', onMouseWheel); - this.dom.root.addEventListener('DOMMouseScroll', onMouseWheel); // size properties of each of the panels this.props = { @@ -222,7 +254,7 @@ Core.prototype.setOptions = function (options) { var fields = [ 'width', 'height', 'minHeight', 'maxHeight', 'autoResize', 'start', 'end', 'clickToUse', 'dataAttributes', 'hiddenDates', - 'locale', 'locales', 'moment', 'rtl' + 'locale', 'locales', 'moment', 'rtl', 'zoomKey' ]; util.selectiveExtend(fields, this.options, options);