From 1cf0e561db5629e92e6519a4bc5e2d499eaad7ee Mon Sep 17 00:00:00 2001 From: paranoidjk Date: Wed, 22 Mar 2017 20:48:17 +0800 Subject: [PATCH] fix(DatePicker): defaultDate should consider maxDate & minDate. fix #1033 (#1035) --- .../__snapshots__/demo.test.web.js.snap | 2 +- components/date-picker/demo/basic.md | 4 ++-- components/date-picker/index.tsx | 6 +++--- components/date-picker/index.web.tsx | 7 ++++--- components/date-picker/utils.tsx | 16 +++++++++++++++- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/components/date-picker/__tests__/__snapshots__/demo.test.web.js.snap b/components/date-picker/__tests__/__snapshots__/demo.test.web.js.snap index 55544c2bf2..0e496ffed7 100644 --- a/components/date-picker/__tests__/__snapshots__/demo.test.web.js.snap +++ b/components/date-picker/__tests__/__snapshots__/demo.test.web.js.snap @@ -24,7 +24,7 @@ exports[`renders ./components/date-picker/demo/basic.md correctly 1`] = `
- 2016-11-22 + 可选,小于结束日期
{ mode={props.mode} minDate={props.minDate} maxDate={props.maxDate} - defaultDate={value || defaultDate} + defaultDate={value || getDefaultDate(this.props)} /> ); const newProps = { @@ -57,7 +57,7 @@ export default class DatePicker extends React.Component { datePicker={dataPicker} styles={styles} {...newProps} - date={value || defaultDate} + date={value || getDefaultDate(this.props)} > {React.cloneElement(children, extraProps)} diff --git a/components/date-picker/index.web.tsx b/components/date-picker/index.web.tsx index 91c47f3e28..22b794ae97 100644 --- a/components/date-picker/index.web.tsx +++ b/components/date-picker/index.web.tsx @@ -2,7 +2,7 @@ import React from 'react'; import PopupDatePicker from 'rmc-date-picker/lib/Popup'; import RCDatePicker from 'rmc-date-picker/lib/DatePicker'; -import { formatFn, getProps } from './utils'; +import { formatFn, getProps, getDefaultDate } from './utils'; import assign from 'object-assign'; import tsPropsType from './PropsType'; import { getComponentLocale, getLocaleCode } from '../_util/getLocale'; @@ -49,9 +49,10 @@ export default class DatePicker extends React.Component { mode={props.mode} pickerPrefixCls={props.pickerPrefixCls} prefixCls={props.prefixCls} - defaultDate={value || defaultDate} + defaultDate={value || getDefaultDate(this.props)} /> ); + return ( { maskTransitionName="am-fade" {...props} prefixCls={popupPrefixCls} - date={value || defaultDate} + date={value || getDefaultDate(this.props)} dismissText={dismissText} okText={okText} > diff --git a/components/date-picker/utils.tsx b/components/date-picker/utils.tsx index d8121f70a6..2bd8152ea0 100644 --- a/components/date-picker/utils.tsx +++ b/components/date-picker/utils.tsx @@ -28,9 +28,23 @@ export function getProps() { return { mode: 'datetime', extra: '请选择', - defaultDate: moment(), onChange() { }, title: '', }; } + +export function getDefaultDate(props) { + const { defaultDate, minDate, maxDate } = props; + if (defaultDate) { + return defaultDate; + } + const now = moment(); + if (minDate && now.isBefore(minDate)) { + return minDate; + } + if (maxDate && maxDate.isBefore(now)) { + return minDate; + } + return now; +}