aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorafc163 <afc163@gmail.com>2017-02-20 16:31:54 +0800
committerafc163 <afc163@gmail.com>2017-02-20 16:31:54 +0800
commit71c3a19635d989f1ed99119bf230856d9faeef21 (patch)
treea27a828296830ecfdf709739d0cbc6e17357dde8
parentaa6d9b9f0867e1697a457c69e6df2bf8d0916e0a (diff)
downloadtime-picker-71c3a19635d989f1ed99119bf230856d9faeef21.tar.gz
time-picker-71c3a19635d989f1ed99119bf230856d9faeef21.tar.zst
time-picker-71c3a19635d989f1ed99119bf230856d9faeef21.zip
Fix controlled open
-rw-r--r--examples/open.html0
-rw-r--r--examples/open.js36
-rw-r--r--src/TimePicker.jsx15
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
3import 'rc-time-picker/assets/index.less';
4
5import React from 'react';
6import ReactDom from 'react-dom';
7import TimePicker from 'rc-time-picker';
8
9const 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
33ReactDom.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 },