-import React, { PropTypes } from 'react';
+import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import Header from './Header';
import Combobox from './Combobox';
import moment from 'moment';
return arr;
}
-const Panel = React.createClass({
- propTypes: {
+class Panel extends Component {
+ static propTypes = {
clearText: PropTypes.string,
prefixCls: PropTypes.string,
className: PropTypes.string,
onEsc: PropTypes.func,
allowEmpty: PropTypes.bool,
showHour: PropTypes.bool,
+ showMinute: PropTypes.bool,
showSecond: PropTypes.bool,
onClear: PropTypes.func,
- },
+ use12Hours: PropTypes.bool,
+ addon: PropTypes.func,
+ onKeyDown: PropTypes.func,
+ };
- getDefaultProps() {
- return {
- prefixCls: 'rc-time-picker-panel',
- onChange: noop,
- onClear: noop,
- disabledHours: noop,
- disabledMinutes: noop,
- disabledSeconds: noop,
- defaultOpenValue: moment(),
- };
- },
+ static defaultProps = {
+ prefixCls: 'rc-time-picker-panel',
+ onChange: noop,
+ onClear: noop,
+ disabledHours: noop,
+ disabledMinutes: noop,
+ disabledSeconds: noop,
+ defaultOpenValue: moment(),
+ use12Hours: false,
+ addon: noop,
+ onKeyDown: noop,
+ };
- getInitialState() {
- return {
- value: this.props.value,
+ constructor(props) {
+ super(props);
+ this.state = {
+ value: props.value,
selectionRange: [],
};
- },
+ }
componentWillReceiveProps(nextProps) {
const value = nextProps.value;
value,
});
}
- },
+ }
- onChange(newValue) {
+ onChange = (newValue) => {
this.setState({ value: newValue });
this.props.onChange(newValue);
- },
-
- onClear() {
- this.props.onClear();
- },
+ }
- onCurrentSelectPanelChange(currentSelectPanel) {
+ onCurrentSelectPanelChange = (currentSelectPanel) => {
this.setState({ currentSelectPanel });
- },
+ }
+
+ // https://github.com/ant-design/ant-design/issues/5829
+ close() {
+ this.props.onEsc();
+ }
render() {
const {
prefixCls, className, placeholder, disabledHours, disabledMinutes,
- disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showSecond,
- format, defaultOpenValue, clearText, onEsc,
+ disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond,
+ format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear, onKeyDown,
} = this.props;
const {
value, currentSelectPanel,
disabledMinutes={disabledMinutes}
disabledSeconds={disabledSeconds}
onChange={this.onChange}
- onClear={this.onClear}
+ onClear={onClear}
allowEmpty={allowEmpty}
+ onKeyDown={onKeyDown}
/>
<Combobox
prefixCls={prefixCls}
format={format}
onChange={this.onChange}
showHour={showHour}
+ showMinute={showMinute}
showSecond={showSecond}
hourOptions={hourOptions}
minuteOptions={minuteOptions}
disabledMinutes={disabledMinutes}
disabledSeconds={disabledSeconds}
onCurrentSelectPanelChange={this.onCurrentSelectPanelChange}
+ use12Hours={use12Hours}
/>
+ {addon(this)}
</div>
);
- },
-});
+ }
+}
export default Panel;