diff --git a/components/date-picker/RangePicker.tsx b/components/date-picker/RangePicker.tsx index 568f5a514a49..0ff1dc9e22fe 100644 --- a/components/date-picker/RangePicker.tsx +++ b/components/date-picker/RangePicker.tsx @@ -186,13 +186,16 @@ export default class RangePicker extends React.Component { let pickerChangeHandler = { onChange: this.handleChange, }; - let calendarHandler: Object = { + let calendarProps: any = { onOk: this.handleChange, }; if (props.timePicker) { pickerChangeHandler.onChange = changedValue => this.handleChange(changedValue); } else { - calendarHandler = {}; + calendarProps = {}; + } + if ('mode' in props) { + calendarProps.mode = props.mode; } const startPlaceholder = ('placeholder' in props) @@ -202,7 +205,7 @@ export default class RangePicker extends React.Component { const calendar = ( { onValueChange={this.handleShowDateChange} hoverValue={hoverValue} onHoverChange={this.handleHoverChange} + onPanelChange={props.onPanelChange} showToday={showToday} /> ); diff --git a/components/date-picker/__tests__/__snapshots__/demo.test.js.snap b/components/date-picker/__tests__/__snapshots__/demo.test.js.snap index eacf4aa7c6dd..7b593921b0da 100644 --- a/components/date-picker/__tests__/__snapshots__/demo.test.js.snap +++ b/components/date-picker/__tests__/__snapshots__/demo.test.js.snap @@ -368,6 +368,56 @@ exports[`renders ./components/date-picker/demo/format.md correctly 1`] = ` `; +exports[`renders ./components/date-picker/demo/mode.md correctly 1`] = ` +
+ +
+ + +
+
+
+ + + + + ~ + + + + + +
+`; + exports[`renders ./components/date-picker/demo/presetted-ranges.md correctly 1`] = `
); @@ -160,7 +164,7 @@ export default function createPicker(TheCalendar): any { { + if (open) { + this.setState({ mode: 'time' }); + } + } + + handlePanelChange = (value, mode) => { + this.setState({ mode }); + } + + render() { + return ( + + ); + } +} + +class ControlledRangePicker extends React.Component { + state = { + mode: ['month', 'month'], + value: [], + }; + + handlePanelChange = (value, mode) => { + this.setState({ + value, + mode: [ + mode[0] === 'date' ? 'month' : mode[0], + mode[1] === 'date' ? 'month' : mode[1], + ], + }); + } + + render() { + const { value, mode } = this.state; + return ( + + ); + } +} + +ReactDOM.render( +
+ +
+ +
+, mountNode); +```` diff --git a/components/date-picker/style/MonthPicker.less b/components/date-picker/style/MonthPicker.less index a6a7f7a69b98..e7213dd776d8 100644 --- a/components/date-picker/style/MonthPicker.less +++ b/components/date-picker/style/MonthPicker.less @@ -1,7 +1,8 @@ .@{calendar-prefix-cls}-month { + height: 248px; .@{calendar-prefix-cls}-month-panel, .@{calendar-prefix-cls}-year-panel { top: 0; - height: 248px; + height: 100%; } } diff --git a/components/date-picker/style/RangePicker.less b/components/date-picker/style/RangePicker.less index c0817da21f62..57eb4a5c485a 100644 --- a/components/date-picker/style/RangePicker.less +++ b/components/date-picker/style/RangePicker.less @@ -111,7 +111,8 @@ } .@{calendar-prefix-cls}-year-panel, - .@{calendar-prefix-cls}-month-panel { + .@{calendar-prefix-cls}-month-panel, + .@{calendar-prefix-cls}-decade-panel { top: @input-box-height; } .@{calendar-prefix-cls}-month-panel .@{calendar-prefix-cls}-year-panel { diff --git a/package.json b/package.json index 22d1e4fcd363..a53d48928f6d 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "omit.js": "^1.0.0", "prop-types": "^15.5.7", "rc-animate": "^2.3.6", - "rc-calendar": "~8.4.1", + "rc-calendar": "~9.1.0", "rc-cascader": "~0.11.3", "rc-checkbox": "~2.0.3", "rc-collapse": "~1.7.5",