Skip to content
This repository was archived by the owner on May 19, 2025. It is now read-only.

Commit 62e3123

Browse files
authored
Merge pull request #204 from trabian/allow-disabling-of-drag-selection
Allow disabling of drag-based selection
2 parents ea059b5 + c59919d commit 62e3123

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ focusedRange(DateRange) | Object | | It defines
125125
onRangeFocusChange(DateRange) | Object | | Callback function for focus changes
126126
preview(DateRange) | Object | | displays a preview range and overwrite DateRange's default preview. Expected shape: `{ startDate: Date, endDate: Date, color: String }`
127127
showPreview(DateRange) | bool | true | visibility of preview
128+
dragSelectionEnabled(Calendar) | bool | true | whether dates can be selected via drag n drop
128129
onPreviewChange(DateRange) | Object | | Callback function for preview changes
129130
dateDisplayFormat(DateRange) | String | `MMM D, YYYY` | selected range preview formatter. Check out [date-fns's format option](https://date-fns.org/v2.0.0-alpha.7/docs/format)
130131
staticRanges(`DefinedRange`, `DateRangePicker`) | Array | [default preDefined ranges](https://github.com/Adphorus/react-date-range/blob/master/src/defaultRanges.js) | -

src/components/Calendar.js

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

479490
Calendar.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

522534
export default Calendar;

0 commit comments

Comments
 (0)