diff --git a/components/date-picker/RangePicker.vue b/components/date-picker/RangePicker.vue
index e6cdd5ea1..89f875971 100644
--- a/components/date-picker/RangePicker.vue
+++ b/components/date-picker/RangePicker.vue
@@ -182,13 +182,14 @@ export default {
},
renderFooter (...args) {
- const { prefixCls, ranges, renderExtraFooter } = this
+ const { prefixCls, ranges, $scopedSlots, $slots } = this
+ const renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter || $slots.renderExtraFooter
if (!ranges && !renderExtraFooter) {
return null
}
const customFooter = renderExtraFooter ? (
) : null
const operations = Object.keys(ranges || {}).map((range) => {
diff --git a/components/date-picker/createPicker.js b/components/date-picker/createPicker.js
index 59231a758..c95b9024a 100644
--- a/components/date-picker/createPicker.js
+++ b/components/date-picker/createPicker.js
@@ -51,10 +51,11 @@ export default function createPicker (TheCalendar, props) {
},
methods: {
renderFooter (...args) {
- const { prefixCls, renderExtraFooter } = this
+ const { prefixCls, $scopedSlots, $slots } = this
+ const renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter || $slots.renderExtraFooter
return renderExtraFooter ? (
) : null
},
diff --git a/components/date-picker/demo/disabled.md b/components/date-picker/demo/disabled.md
index 7fbe5347c..db63bf675 100644
--- a/components/date-picker/demo/disabled.md
+++ b/components/date-picker/demo/disabled.md
@@ -1,34 +1,37 @@
----
-order: 4
-title:
- zh-CN: 禁用
- en-US: Disabled
----
-
-## zh-CN
+
+#### 禁用
选择框的不可用状态。
+
-## en-US
-
+
+#### Disabled
A disabled state of the `DatePicker`.
+
-````jsx
-import { DatePicker } from 'antd';
-import moment from 'moment';
-const { MonthPicker, RangePicker } = DatePicker;
-
-const dateFormat = 'YYYY-MM-DD';
-ReactDOM.render(
+```html
+
-, mountNode);
-````
+
+
+```
diff --git a/components/date-picker/demo/extra-footer.md b/components/date-picker/demo/extra-footer.md
index a313edd6a..337ac5fc0 100644
--- a/components/date-picker/demo/extra-footer.md
+++ b/components/date-picker/demo/extra-footer.md
@@ -1,29 +1,42 @@
----
-order: 10
-title:
- zh-CN: 额外的页脚
- en-US: Extra Footer
----
-
-## zh-CN
+
+#### 额外的页脚
在浮层中加入额外的页脚,以满足某些定制信息的需求。
+
-## en-US
-
+
+#### Extra Footer
Render extra footer in panel for customized requirements.
+
-````jsx
-import { DatePicker } from 'antd';
-const { RangePicker, MonthPicker } = DatePicker;
-
-ReactDOM.render(
+```html
+
-
'extra footer'} />
- 'extra footer'} showTime />
- 'extra footer'} />
- 'extra footer'} showTime />
- 'extra footer'} placeholder="Select month" />
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
+
+
+ extra footer
+
+
-, mountNode);
-````
+
+```
diff --git a/components/date-picker/demo/format.md b/components/date-picker/demo/format.md
index 60cb0a584..81b746222 100644
--- a/components/date-picker/demo/format.md
+++ b/components/date-picker/demo/format.md
@@ -1,35 +1,40 @@
----
-order: 1
-title:
- zh-CN: 日期格式
- en-US: Date Format
----
-
-## zh-CN
+
+#### 日期格式
使用 `format` 属性,可以自定义日期显示格式。
+
-## en-US
-
+
+#### Date Format
We can set the date format by `format`.
+
-````jsx
-import { DatePicker } from 'antd';
-import moment from 'moment';
-const { MonthPicker, RangePicker } = DatePicker;
-
-const dateFormat = 'YYYY/MM/DD';
-const monthFormat = 'YYYY/MM';
-ReactDOM.render(
+```html
+
-, mountNode);
-````
+
+
+```
+
diff --git a/components/date-picker/demo/mode.md b/components/date-picker/demo/mode.md
index 4bd78df8c..23016b38e 100644
--- a/components/date-picker/demo/mode.md
+++ b/components/date-picker/demo/mode.md
@@ -1,82 +1,61 @@
----
-order: 11
-title:
- zh-CN: 受控面板
- en-US: Controlled Panels
----
-
-## zh-CN
+
+#### 受控面板
通过组合 `mode` 与 `onPanelChange` 控制要展示的面板。
+
-## en-US
-
+
+#### Controlled Panels
Determing which panel to show with `mode` and `onPanelChange`.
+
-````jsx
-import { DatePicker } from 'antd';
-const { RangePicker } = DatePicker;
-
-class ControlledDatePicker extends React.Component {
- state = { mode: 'time' };
-
- handleOpenChange = (open) => {
- if (open) {
- this.setState({ mode: 'time' });
+```html
+
+
+
+
+```
-ReactDOM.render(
-
-
-
-
-
-, mountNode);
-````
diff --git a/components/date-picker/interface.js b/components/date-picker/interface.js
index d8c2b4203..04e222e08 100644
--- a/components/date-picker/interface.js
+++ b/components/date-picker/interface.js
@@ -41,7 +41,7 @@ export const SinglePickerProps = () => ({
export const DatePickerProps = () => ({
...PickerProps(), ...SinglePickerProps(),
- showTime: PropTypes.oneOfType([PropTypes.shape(TimePickerProps()).loose, PropTypes.bool]),
+ showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),
open: PropTypes.bool,
disabledTime: PropTypes.func,
// onOpenChange?: (status: bool) => void;
@@ -54,9 +54,15 @@ export const MonthPickerProps = () => ({
placeholder: PropTypes.string,
monthCellContentRender: PropTypes.func,
})
+function isMomentArray (value) {
+ if (Array.isArray(value)) {
+ return value.length === 0 || !!value.find((val) => val === undefined || moment.isMoment(val))
+ }
+ return false
+}
-export const RangePickerValue = PropTypes.arrayOf(MomentType)
-export const RangePickerPresetRange = PropTypes.oneOfType([RangePickerValue, PropTypes.func])
+export const RangePickerValue = PropTypes.custom(isMomentArray)
+// export const RangePickerPresetRange = PropTypes.oneOfType([RangePickerValue, PropTypes.func])
export const RangePickerProps = () => ({
...PickerProps(),
@@ -66,7 +72,7 @@ export const RangePickerProps = () => ({
// onChange?: (dates: RangePickerValue, dateStrings: [string, string]) => void;
// onCalendarChange?: (dates: RangePickerValue, dateStrings: [string, string]) => void;
// onOk?: (selectedTime: moment.Moment) => void;
- showTime: PropTypes.oneOfType([PropTypes.shape(TimePickerProps()).loose, PropTypes.bool]),
+ showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),
ranges: PropTypes.objectOf(String),
placeholder: PropTypes.arrayOf(String),
mode: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(String)]),
diff --git a/components/date-picker/wrapPicker.js b/components/date-picker/wrapPicker.js
index 8aa1f6076..dae9ed41f 100644
--- a/components/date-picker/wrapPicker.js
+++ b/components/date-picker/wrapPicker.js
@@ -131,7 +131,11 @@ export default function wrapPicker (Picker, props, defaultFormat) {
return (
+ >
+
+ {this.$slots.renderExtraFooter}
+
+
)
},
},