From 9854be88a404e18398b8bff820c2e1c312e81b37 Mon Sep 17 00:00:00 2001 From: Ben Styles Date: Wed, 31 Jan 2018 11:31:39 +0000 Subject: [PATCH 1/2] optional slideCanBeTerminated prop --- src/container/Calendar.react.js | 3 +++ src/pure/DaySelector.react.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/container/Calendar.react.js b/src/container/Calendar.react.js index e40270a..d98d804 100644 --- a/src/container/Calendar.react.js +++ b/src/container/Calendar.react.js @@ -39,6 +39,7 @@ type Props = { selected?: Moment, onChange?: (date: Moment) => void, slideThreshold?: number, + slideCanBeTerminated?: boolean, // Minimum and maximum date. minDate: Moment, maxDate: Moment, @@ -201,6 +202,7 @@ export default class Calendar extends Component { selected={this.props.selected} onFocus={this._changeFocus} onChange={(date) => this.props.onChange && this.props.onChange(date)} + slideCanBeTerminated={this.props.slideCanBeTerminated} monthOffset={this.state.monthOffset} minDate={this.props.minDate} maxDate={this.props.maxDate} @@ -249,6 +251,7 @@ export default class Calendar extends Component { } } Calendar.defaultProps = { + slideCanBeTerminated: true, minDate: Moment(), maxDate: Moment().add(10, 'years'), startStage: DAY_SELECTOR, diff --git a/src/pure/DaySelector.react.js b/src/pure/DaySelector.react.js index e9fcf1d..96be6cd 100644 --- a/src/pure/DaySelector.react.js +++ b/src/pure/DaySelector.react.js @@ -27,6 +27,7 @@ type Props = { onChange?: (date: Moment) => void, onFocus?: (date: Moment) => void, slideThreshold?: number, + slideCanBeTerminated: boolean, monthOffset?: number, // Minimum and maximum dates. minDate: Moment, @@ -82,7 +83,7 @@ export default class DaySelector extends Component { onPanResponderMove: (evt, gestureState) => { this._slide(gestureState.dx); }, - onPanResponderTerminationRequest: (evt, gestureState) => true, + onPanResponderTerminationRequest: (evt, gestureState) => this.props.slideCanBeTerminated, onPanResponderRelease: (evt, gestureState) => { // The user has released all touches while this view is the // responder. This typically means a gesture has succeeded From 3e18fbbfaf6dbaff22c185c2ce5fd0ebfd993517 Mon Sep 17 00:00:00 2001 From: Ben Styles Date: Wed, 31 Jan 2018 12:49:28 +0000 Subject: [PATCH 2/2] updated README with slideCanBeTerminated prop --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bf5bf0f..05722d0 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ import Moment from 'moment'; | *startStage* | "day"/"month"/"year" | **[Default: "day"]** Whether you would like to select the day, month or year first. | *finalStage* | "day"/"month"/"year" | **[Default: "day"]** The last level of selection you want. | *slideThreshold* | number | **[Default: min([width / 3, 250])]** The number of pixels after which the slide event will be triggered. +| *slideCanBeTerminated* | boolean | **[Default: true]** Whether scrolling a parent `ScrollView` can terminate the current sliding interaction. | *showArrows* | boolean | **[Default: false]** Whether you would like to show arrow buttons for moving between months. ### Locale specific calendar