Skip to content

Commit aa8f08b

Browse files
bs85jquense
authored andcommitted
feat: add selecting and drag cancelation (jquense#1119)
* feat: cancel drag on Esc press * fix: always reset drag when an event happens out of bounds * feat: cancel selection on Esc press
1 parent 7a48b6a commit aa8f08b

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/DayColumn.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ class DayColumn extends React.Component {
188188
events,
189189
accessors,
190190
slotMetrics,
191-
minimumStartDifference: Math.ceil(step * timeslots / 2),
191+
minimumStartDifference: Math.ceil((step * timeslots) / 2),
192192
})
193193

194194
return styledEvents.map(({ event, style }, idx) => {
@@ -318,6 +318,12 @@ class DayColumn extends React.Component {
318318
this.setState({ selecting: false })
319319
}
320320
})
321+
322+
selector.on('reset', () => {
323+
if (this.state.selecting) {
324+
this.setState({ selecting: false })
325+
}
326+
})
321327
}
322328

323329
_teardownSelectable = () => {

src/Selection.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ class Selection {
9494
this._onTouchMoveWindowListener && this._onTouchMoveWindowListener.remove()
9595
this._onInitialEventListener && this._onInitialEventListener.remove()
9696
this._onEndListener && this._onEndListener.remove()
97+
this._onEscListener && this._onEscListener.remove()
9798
this._onMoveListener && this._onMoveListener.remove()
9899
this._onKeyUpListener && this._onKeyUpListener.remove()
99100
this._onKeyDownListener && this._onKeyDownListener.remove()
@@ -237,6 +238,10 @@ class Selection {
237238
'mouseup',
238239
this._handleTerminatingEvent
239240
)
241+
this._onEscListener = addEventListener(
242+
'keydown',
243+
this._handleTerminatingEvent
244+
)
240245
this._onMoveListener = addEventListener(
241246
'mousemove',
242247
this._handleMoveEvent
@@ -274,7 +279,11 @@ class Selection {
274279

275280
this._initialEventData = null
276281

277-
if (click && !inRoot) {
282+
if (e.key === 'Escape') {
283+
return this.emit('reset')
284+
}
285+
286+
if (!inRoot) {
278287
return this.emit('reset')
279288
}
280289

@@ -318,7 +327,7 @@ class Selection {
318327

319328
_handleMoveEvent(e) {
320329
if (this._initialEventData === null) {
321-
return;
330+
return
322331
}
323332

324333
let { x, y } = this._initialEventData

src/addons/dragAndDrop/EventContainerWrapper.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,11 @@ class EventContainerWrapper extends React.Component {
151151
})
152152

153153
selector.on('click', () => this.context.draggable.onEnd(null))
154+
155+
selector.on('reset', () => {
156+
this.reset()
157+
this.context.draggable.onEnd(null)
158+
})
154159
}
155160

156161
handleInteractionEnd = () => {

0 commit comments

Comments
 (0)