Skip to content

Commit 386d4bc

Browse files
committed
[fixed] selectable can properly be toggled on and off
1 parent 92252e3 commit 386d4bc

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

src/BackgroundCells.jsx

+14-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ class DisplayCells extends React.Component {
2121
}
2222

2323
componentWillUnmount() {
24-
this._selector && this._selector.teardown()
24+
this._teardownSelectable();
25+
}
26+
27+
componentWillReceiveProps(nextProps) {
28+
if (nextProps.selectable && !this.props.selectable)
29+
this._selectable();
30+
if (!nextProps.selectable && this.props.selectable)
31+
this._teardownSelectable();
2532
}
2633

2734
render(){
@@ -104,6 +111,12 @@ class DisplayCells extends React.Component {
104111
})
105112
}
106113

114+
_teardownSelectable() {
115+
if (!this._selector) return
116+
this._selector.teardown();
117+
this._selector = null;
118+
}
119+
107120
_selectSlot({ endIdx, startIdx }) {
108121
this.props.onSelectSlot &&
109122
this.props.onSelectSlot({

src/DaySlot.jsx

+16-2
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,21 @@ let DaySlot = React.createClass({
5656
return { selecting: false };
5757
},
5858

59+
5960
componentDidMount() {
6061
this.props.selectable
6162
&& this._selectable()
6263
},
6364

6465
componentWillUnmount() {
65-
this._selector && this._selector.teardown()
66+
this._teardownSelectable();
67+
},
68+
69+
componentWillReceiveProps(nextProps) {
70+
if (nextProps.selectable && !this.props.selectable)
71+
this._selectable();
72+
if (!nextProps.selectable && this.props.selectable)
73+
this._teardownSelectable();
6674
},
6775

6876
render() {
@@ -214,7 +222,13 @@ let DaySlot = React.createClass({
214222
})
215223
},
216224

217-
_selectSlot({ startDate, endDate, endSlot, startSlot }){
225+
_teardownSelectable() {
226+
if (!this._selector) return
227+
this._selector.teardown();
228+
this._selector = null;
229+
},
230+
231+
_selectSlot({ startDate, endDate, endSlot, startSlot }) {
218232
let current = startDate
219233
, slots = [];
220234

src/Month.jsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ let MonthView = React.createClass({
195195

196196
return (
197197
<BackgroundCells
198-
selectable
198+
selectable={this.props.selectable}
199199
slots={7}
200200
ref={r => this._bgRows[idx] = r}
201201
onSelectSlot={onSelectSlot}

0 commit comments

Comments
 (0)