Skip to content

Commit ddc717d

Browse files
authored
Allow canceling drag-to-zoom on Escape key (#672)
This makes the behavior of drag-to-zoom closer to the browser's standard drag-and-drop behavior.
1 parent fc69374 commit ddc717d

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

src/handlers.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,18 @@ export function mouseMove(chart, event) {
3434
}
3535
}
3636

37+
function keyDown(chart, event) {
38+
const state = getState(chart);
39+
if (!state.dragStart || event.key !== 'Escape') {
40+
return;
41+
}
42+
43+
removeHandler(chart, 'keydown');
44+
state.dragging = false;
45+
state.dragStart = state.dragEnd = null;
46+
chart.update('none');
47+
}
48+
3749
function zoomStart(chart, event, zoomOptions) {
3850
const {onZoomStart, onZoomRejected} = zoomOptions;
3951
if (onZoomStart) {
@@ -66,6 +78,7 @@ export function mouseDown(chart, event) {
6678
state.dragStart = event;
6779

6880
addHandler(chart, chart.canvas, 'mousemove', mouseMove);
81+
addHandler(chart, window.document, 'keydown', keyDown);
6982
}
7083

7184
export function computeDragRect(chart, mode, beginPoint, endPoint) {
@@ -201,6 +214,7 @@ export function addListeners(chart, options) {
201214
removeHandler(chart, 'mousedown');
202215
removeHandler(chart, 'mousemove');
203216
removeHandler(chart, 'mouseup');
217+
removeHandler(chart, 'keydown');
204218
}
205219
}
206220

@@ -210,4 +224,5 @@ export function removeListeners(chart) {
210224
removeHandler(chart, 'mouseup');
211225
removeHandler(chart, 'wheel');
212226
removeHandler(chart, 'click');
227+
removeHandler(chart, 'keydown');
213228
}

0 commit comments

Comments
 (0)