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 + + +``` 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 + +``` 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 + + +``` + 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 ( + > + + ) }, },