diff --git a/docs/timeline/index.html b/docs/timeline/index.html
index 374b9f97..da2084f9 100644
--- a/docs/timeline/index.html
+++ b/docs/timeline/index.html
@@ -1584,6 +1584,33 @@ timeline.off('select', onSelect);
+
+ mouseDown |
+
+ Passes a properties object as returned by the method Timeline.getEventProperties(event) .
+ |
+ Fired when the mouse down event is triggered over a timeline element.
+ |
+
+
+
+ mouseUp |
+
+ Passes a properties object as returned by the method Timeline.getEventProperties(event) .
+ |
+ Fired when the mouse up event is triggered over a timeline element.
+ |
+
+
+
+ mouseMove |
+
+ Passes a properties object as returned by the method Timeline.getEventProperties(event) .
+ |
+ Fired when the mouse is moved over a timeline element.
+ |
+
+
groupDragged |
diff --git a/examples/timeline/interaction/eventListeners.html b/examples/timeline/interaction/eventListeners.html
index 91bacfb0..ae16dc67 100644
--- a/examples/timeline/interaction/eventListeners.html
+++ b/examples/timeline/interaction/eventListeners.html
@@ -72,6 +72,14 @@
logEvent('contextmenu', properties);
});
+ timeline.on('mouseDown', function (properties) {
+ logEvent('mouseDown', properties);
+ });
+
+ timeline.on('mouseUp', function (properties) {
+ logEvent('mouseUp', properties);
+ });
+
// other possible events:
// timeline.on('mouseOver', function (properties) {
diff --git a/lib/timeline/Timeline.js b/lib/timeline/Timeline.js
index 02d633a4..8b870578 100644
--- a/lib/timeline/Timeline.js
+++ b/lib/timeline/Timeline.js
@@ -139,9 +139,27 @@ function Timeline (container, items, groups, options) {
this.dom.root.onmouseover = function (event) {
me.emit('mouseOver', me.getEventProperties(event))
};
- this.dom.root.onmousemove = function (event) {
- me.emit('mouseMove', me.getEventProperties(event))
- };
+ if(window.PointerEvent) {
+ this.dom.root.onpointerdown = function (event) {
+ me.emit('mouseDown', me.getEventProperties(event))
+ };
+ this.dom.root.onpointermove = function (event) {
+ me.emit('mouseMove', me.getEventProperties(event))
+ };
+ this.dom.root.onpointerup = function (event) {
+ me.emit('mouseUp', me.getEventProperties(event))
+ };
+ } else {
+ this.dom.root.onmousemove = function (event) {
+ me.emit('mouseMove', me.getEventProperties(event))
+ };
+ this.dom.root.onmousedown = function (event) {
+ me.emit('mouseDown', me.getEventProperties(event))
+ };
+ this.dom.root.onmouseup = function (event) {
+ me.emit('mouseUp', me.getEventProperties(event))
+ };
+ }
//Single time autoscale/fit
this.fitDone = false;
diff --git a/lib/timeline/component/ItemSet.js b/lib/timeline/component/ItemSet.js
index 002f294a..09f16f39 100644
--- a/lib/timeline/component/ItemSet.js
+++ b/lib/timeline/component/ItemSet.js
@@ -2220,7 +2220,7 @@ ItemSet.prototype.groupFromTarget = function(event) {
var clientY = event.center ? event.center.y : event.clientY;
var groupIds = this.groupIds;
- if (groupIds.length <= 0) {
+ if (groupIds.length <= 0 && this.groupsData) {
groupIds = this.groupsData.getIds({
order: this.options.groupOrder
});
|