@@ -51,6 +51,7 @@ let DaySlot = React.createClass({
5151 selectable : React . PropTypes . bool ,
5252 eventOffset : React . PropTypes . number ,
5353
54+ onSelecting : React . PropTypes . func ,
5455 onSelectSlot : React . PropTypes . func . isRequired ,
5556 onSelectEvent : React . PropTypes . func . isRequired
5657 } ,
@@ -193,6 +194,24 @@ let DaySlot = React.createClass({
193194 let node = findDOMNode ( this ) ;
194195 let selector = this . _selector = new Selection ( ( ) => findDOMNode ( this ) )
195196
197+ let maybeSelect = ( box ) => {
198+ let onSelecting = this . props . onSelecting
199+ let current = this . state || { } ;
200+ let state = selectionState ( box ) ;
201+ let { startDate : start , endDate : end } = state ;
202+
203+ if ( onSelecting ) {
204+ if (
205+ ( dates . eq ( current . startDate , start , 'minutes' ) &&
206+ dates . eq ( current . endDate , end , 'minutes' ) ) ||
207+ onSelecting ( { start, end } ) === false
208+ )
209+ return
210+ }
211+
212+ this . setState ( state )
213+ }
214+
196215 let selectionState = ( { x, y } ) => {
197216 let { step, min, max } = this . props ;
198217 let { top, bottom } = getBoundsForNode ( node )
@@ -225,11 +244,8 @@ let DaySlot = React.createClass({
225244 }
226245 }
227246
228- selector . on ( 'selecting' ,
229- box => this . setState ( selectionState ( box ) ) )
230-
231- selector . on ( 'selectStart' ,
232- box => this . setState ( selectionState ( box ) ) )
247+ selector . on ( 'selecting' , maybeSelect )
248+ selector . on ( 'selectStart' , maybeSelect )
233249
234250 selector
235251 . on ( 'click' , ( { x, y } ) => {
@@ -242,8 +258,10 @@ let DaySlot = React.createClass({
242258
243259 selector
244260 . on ( 'select' , ( ) => {
245- this . _selectSlot ( this . state )
246- this . setState ( { selecting : false } )
261+ if ( this . state . selecting ) {
262+ this . _selectSlot ( this . state )
263+ this . setState ( { selecting : false } )
264+ }
247265 } )
248266 } ,
249267
0 commit comments