Skip to content
Snippets Groups Projects
Commit 5811abf1 authored by Tom Robinson's avatar Tom Robinson
Browse files

Tighen logic for reseting calendar 'current' when receiving props. Fixes issue with switching month

parent 964c8059
Branches
Tags
No related merge requests found
......@@ -31,15 +31,25 @@ export default class Calendar extends Component {
componentWillReceiveProps(nextProps) {
if (
!moment(nextProps.selected).isSame(this.props.selected, "day") ||
!moment(nextProps.selectedEnd).isSame(this.props.selectedEnd, "day")
// `selected` became null or not null
(nextProps.selected == null) !== (this.props.selected == null) ||
// `selectedEnd` became null or not null
(nextProps.selectedEnd == null) !== (this.props.selectedEnd == null) ||
// `selected` is not null and doesn't match previous `selected`
(nextProps.selected != null &&
!moment(nextProps.selected).isSame(this.props.selected, "day")) ||
// `selectedEnd` is not null and doesn't match previous `selectedEnd`
(nextProps.selectedEnd != null &&
!moment(nextProps.selectedEnd).isSame(this.props.selectedEnd, "day"))
) {
let resetCurrent = false;
if (nextProps.selected && nextProps.selectedEnd) {
if (nextProps.selected != null && nextProps.selectedEnd != null) {
// reset if `current` isn't between `selected` and `selectedEnd` month
resetCurrent =
nextProps.selected.isAfter(this.state.current, "month") &&
nextProps.selectedEnd.isBefore(this.state.current, "month");
} else if (nextProps.selected) {
} else if (nextProps.selected != null) {
// reset if `current` isn't in `selected` month
resetCurrent =
nextProps.selected.isAfter(this.state.current, "month") ||
nextProps.selected.isBefore(this.state.current, "month");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment