@@ -280,16 +280,26 @@ class Calendar extends PureComponent {
280280 ) ;
281281 }
282282 onDragSelectionStart ( date ) {
283- this . setState ( {
284- drag : {
285- status : true ,
286- range : { startDate : date , endDate : date } ,
287- disablePreview : true ,
288- } ,
289- } ) ;
283+ const { onChange, dragSelectionEnabled } = this . props ;
284+
285+ if ( dragSelectionEnabled ) {
286+ this . setState ( {
287+ drag : {
288+ status : true ,
289+ range : { startDate : date , endDate : date } ,
290+ disablePreview : true ,
291+ } ,
292+ } ) ;
293+ } else {
294+ onChange && onChange ( date ) ;
295+ }
290296 }
297+
291298 onDragSelectionEnd ( date ) {
292- const { updateRange, displayMode, onChange } = this . props ;
299+ const { updateRange, displayMode, onChange, dragSelectionEnabled } = this . props ;
300+
301+ if ( ! dragSelectionEnabled ) return ;
302+
293303 if ( displayMode === 'date' || ! this . state . drag . status ) {
294304 onChange && onChange ( date ) ;
295305 return ;
@@ -308,7 +318,7 @@ class Calendar extends PureComponent {
308318 }
309319 onDragSelectionMove ( date ) {
310320 const { drag } = this . state ;
311- if ( ! drag . status ) return ;
321+ if ( ! drag . status || ! this . props . dragSelectionEnabled ) return ;
312322 this . setState ( {
313323 drag : {
314324 status : drag . status ,
@@ -474,6 +484,7 @@ Calendar.defaultProps = {
474484 maxDate : addYears ( new Date ( ) , 20 ) ,
475485 minDate : addYears ( new Date ( ) , - 100 ) ,
476486 rangeColors : [ '#3d91ff' , '#3ecf8e' , '#fed14c' ] ,
487+ dragSelectionEnabled : true ,
477488} ;
478489
479490Calendar . propTypes = {
@@ -517,6 +528,7 @@ Calendar.propTypes = {
517528 direction : PropTypes . oneOf ( [ 'vertical' , 'horizontal' ] ) ,
518529 navigatorRenderer : PropTypes . func ,
519530 rangeColors : PropTypes . arrayOf ( PropTypes . string ) ,
531+ dragSelectionEnabled : PropTypes . bool ,
520532} ;
521533
522534export default Calendar ;
0 commit comments