Skip to content

Commit

Permalink
fix(DatePicker): defaultDate should consider maxDate & minDate. fix #…
Browse files Browse the repository at this point in the history
  • Loading branch information
paranoidjk authored Mar 22, 2017
1 parent 04904f7 commit 1cf0e56
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ exports[`renders ./components/date-picker/demo/basic.md correctly 1`] = `
<div
class="am-list-extra"
>
2016-11-22
可选,小于结束日期
</div>
<div
class="am-list-arrow am-list-arrow-horizontal"
Expand Down
4 changes: 2 additions & 2 deletions components/date-picker/demo/basic.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import 'moment/locale/zh-cn';
import enUs from 'antd-mobile/lib/date-picker/locale/en_US';

const zhNow = moment().locale('zh-cn').utcOffset(8);
const maxDate = moment('2018-12-03 +0800', 'YYYY-MM-DD Z').utcOffset(8);
const maxDate = moment('2016-12-03 +0800', 'YYYY-MM-DD Z').utcOffset(8);
const minDate = moment('2015-08-06 +0800', 'YYYY-MM-DD Z').utcOffset(8);

const maxTime = moment('22:00 +0800', 'HH:mm Z').utcOffset(8);
Expand Down Expand Up @@ -59,7 +59,7 @@ class Test extends React.Component {
title="选择日期"
extra="可选,小于结束日期"
{...getFieldProps('date1', {
initialValue: zhNow,

})}
minDate={minDate}
maxDate={maxDate}
Expand Down
6 changes: 3 additions & 3 deletions components/date-picker/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import PopupDatePicker from 'rmc-date-picker/lib/Popup';
import PopupStyles from '../picker/styles';
import { formatFn, getProps as getDefaultProps } from './utils';
import { formatFn, getProps as getDefaultProps, getDefaultDate } from './utils';
import assign from 'object-assign';
import tsPropsType from './PropsType';
import RCDatePicker from 'rmc-date-picker/lib/DatePicker';
Expand Down Expand Up @@ -44,7 +44,7 @@ export default class DatePicker extends React.Component<tsPropsType, any> {
mode={props.mode}
minDate={props.minDate}
maxDate={props.maxDate}
defaultDate={value || defaultDate}
defaultDate={value || getDefaultDate(this.props)}
/>
);
const newProps = {
Expand All @@ -57,7 +57,7 @@ export default class DatePicker extends React.Component<tsPropsType, any> {
datePicker={dataPicker}
styles={styles}
{...newProps}
date={value || defaultDate}
date={value || getDefaultDate(this.props)}
>
{React.cloneElement(children, extraProps)}
</PopupDatePicker>
Expand Down
7 changes: 4 additions & 3 deletions components/date-picker/index.web.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -49,9 +49,10 @@ export default class DatePicker extends React.Component<tsPropsType, any> {
mode={props.mode}
pickerPrefixCls={props.pickerPrefixCls}
prefixCls={props.prefixCls}
defaultDate={value || defaultDate}
defaultDate={value || getDefaultDate(this.props)}
/>
);

return (
<PopupDatePicker
datePicker={dataPicker}
Expand All @@ -60,7 +61,7 @@ export default class DatePicker extends React.Component<tsPropsType, any> {
maskTransitionName="am-fade"
{...props}
prefixCls={popupPrefixCls}
date={value || defaultDate}
date={value || getDefaultDate(this.props)}
dismissText={dismissText}
okText={okText}
>
Expand Down
16 changes: 15 additions & 1 deletion components/date-picker/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

0 comments on commit 1cf0e56

Please sign in to comment.