diff options
author | afc163 <afc163@gmail.com> | 2017-02-20 16:31:54 +0800 |
---|---|---|
committer | afc163 <afc163@gmail.com> | 2017-02-20 16:31:54 +0800 |
commit | 71c3a19635d989f1ed99119bf230856d9faeef21 (patch) | |
tree | a27a828296830ecfdf709739d0cbc6e17357dde8 | |
parent | aa6d9b9f0867e1697a457c69e6df2bf8d0916e0a (diff) | |
download | time-picker-71c3a19635d989f1ed99119bf230856d9faeef21.tar.gz time-picker-71c3a19635d989f1ed99119bf230856d9faeef21.tar.zst time-picker-71c3a19635d989f1ed99119bf230856d9faeef21.zip |
Fix controlled open
-rw-r--r-- | examples/open.html | 0 | ||||
-rw-r--r-- | examples/open.js | 36 | ||||
-rw-r--r-- | src/TimePicker.jsx | 15 |
3 files changed, 42 insertions, 9 deletions
diff --git a/examples/open.html b/examples/open.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/examples/open.html | |||
diff --git a/examples/open.js b/examples/open.js new file mode 100644 index 0000000..5a0d1ed --- /dev/null +++ b/examples/open.js | |||
@@ -0,0 +1,36 @@ | |||
1 | /* eslint no-console:0 */ | ||
2 | |||
3 | import 'rc-time-picker/assets/index.less'; | ||
4 | |||
5 | import React from 'react'; | ||
6 | import ReactDom from 'react-dom'; | ||
7 | import TimePicker from 'rc-time-picker'; | ||
8 | |||
9 | const App = React.createClass({ | ||
10 | getInitialState() { | ||
11 | return { | ||
12 | open: false, | ||
13 | }; | ||
14 | }, | ||
15 | toggleOpen() { | ||
16 | this.setState({ | ||
17 | open: !this.state.open, | ||
18 | }); | ||
19 | }, | ||
20 | setOpen({ open }) { | ||
21 | this.setState({ open }); | ||
22 | }, | ||
23 | render() { | ||
24 | return ( | ||
25 | <div> | ||
26 | <button onClick={this.toggleOpen}>Toggle open</button> | ||
27 | <TimePicker open={this.state.open} onOpen={this.setOpen} onClose={this.setOpen} /> | ||
28 | </div> | ||
29 | ); | ||
30 | }, | ||
31 | }); | ||
32 | |||
33 | ReactDom.render( | ||
34 | <App />, | ||
35 | document.getElementById('__react-content') | ||
36 | ); | ||
diff --git a/src/TimePicker.jsx b/src/TimePicker.jsx index 4d7d4d6..e9d6d15 100644 --- a/src/TimePicker.jsx +++ b/src/TimePicker.jsx | |||
@@ -169,19 +169,16 @@ const Picker = React.createClass({ | |||
169 | ); | 169 | ); |
170 | }, | 170 | }, |
171 | 171 | ||
172 | setOpen(open, callback) { | 172 | setOpen(open) { |
173 | const { onOpen, onClose } = this.props; | 173 | const { onOpen, onClose } = this.props; |
174 | if (this.state.open !== open) { | 174 | if (this.state.open !== open) { |
175 | this.setState({ | 175 | if (!('open' in this.props)) { |
176 | open, | 176 | this.setState({ open }); |
177 | }, callback); | 177 | } |
178 | const event = { | ||
179 | open, | ||
180 | }; | ||
181 | if (open) { | 178 | if (open) { |
182 | onOpen(event); | 179 | onOpen({ open }); |
183 | } else { | 180 | } else { |
184 | onClose(event); | 181 | onClose({ open }); |
185 | } | 182 | } |
186 | } | 183 | } |
187 | }, | 184 | }, |