diff --git a/components/calendar/demo/custom-render.md b/components/calendar/demo/custom-render.md
index d81be5f13..4ad3c6be8 100644
--- a/components/calendar/demo/custom-render.md
+++ b/components/calendar/demo/custom-render.md
@@ -18,6 +18,7 @@ function monthCellRender(value) {
}
ReactDOM.render(
-
+
, document.getElementById('components-calendar-demo-custom-render'));
````
diff --git a/components/calendar/index.jsx b/components/calendar/index.jsx
index f6dc475e9..1ba8390d2 100644
--- a/components/calendar/index.jsx
+++ b/components/calendar/index.jsx
@@ -12,20 +12,19 @@ function zerofixed (v) {
return v + '';
}
-function getNow() {
- const value = new GregorianCalendar();
- value.setTime(Date.now());
- return value;
-}
-
class Calendar extends Component {
constructor(props) {
super();
this.state = {
- value: props.value || getNow(),
+ value: this.parseDateFromValue(props.value),
type: props.type,
};
}
+ parseDateFromValue(value) {
+ const date = new GregorianCalendar();
+ date.setTime(value);
+ return date;
+ }
monthCellRender(value, locale) {
const prefixCls = this.props.prefixCls;
const month = value.getMonth();
@@ -61,12 +60,6 @@ class Calendar extends Component {
this.setState({ type });
this.props.onTypeChange(type, oldType);
}
- onPanelChange(value) {
- if (this.state.type === 'month') {
- this.setType('date');
- }
- this.setValue(value);
- }
render() {
const props = this.props;
const {value, type} = this.state;
@@ -90,7 +83,6 @@ class Calendar extends Component {
prefixCls={`${prefixCls}`}
showHeader={false}
value={value}
- onChange={this.onPanelChange.bind(this)}
monthCellRender={ this.monthCellRender.bind(this) }
dateCellRender={ dateCellRender.bind(this) } />
@@ -107,6 +99,7 @@ Calendar.propTypes = {
className: PropTypes.string,
style: PropTypes.object,
onChange: PropTypes.func,
+ value: PropTypes.instanceOf(Date),
onTypeChange: PropTypes.func,
};
@@ -119,6 +112,7 @@ Calendar.defaultProps = {
onChange: noop,
onTypeChange: noop,
type: 'date',
+ value: Date.now(),
};
export default Calendar;