Skip to content

Commit 540994a

Browse files
inter-actione1emeb0t
authored andcommitted
fix issue #495
1 parent bb6dc79 commit 540994a

File tree

6 files changed

+20
-17
lines changed

6 files changed

+20
-17
lines changed

src/date-picker/BasePicker.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,9 +302,9 @@ export default class BasePicker extends Component {
302302
const iptxt = value
303303
const nstate: Object = { text: iptxt }
304304

305-
if (iptxt.trim() === '') {
305+
if (iptxt.trim() === '' || !this.isInputValid(iptxt)) {
306306
nstate.value = null
307-
} else if (this.isInputValid(iptxt)) {//only set value on a valid date input
307+
} else {//only set value on a valid date input
308308
nstate.value = this.parseDate(iptxt)
309309
}
310310
this.setState(nstate)

src/date-picker/__test__/DatePicker_test.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ describe('DatePicker tests', function () {
7676
onChange
7777
})
7878
w.find('input').simulate('focus');
79+
w.find('input').simulate('change', {target: {value: ''}})
7980
w.find('.el-date-table td.available').at(0).simulate('click', nativeEvent)
8081
expect(onChange.called).toBeTruthy()
8182
expect(onChange.args[0][0] instanceof Date).toBeTruthy()

src/date-picker/basic/MonthTable.jsx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
1-
//@flow
21
import React from 'react'
32

43
import { PropTypes, Component } from '../../../libs';
54
import { hasClass, deconstructDate } from '../utils'
65
import Locale from '../../locale'
76

8-
import type {MonthTableProps} from '../Types';
97

108
export default class MonthTable extends Component {
11-
constructor(props: MonthTableProps){
9+
constructor(props){
1210
super(props)
1311
}
1412

15-
getCellStyle(month: number) {
13+
getCellStyle(month) {
1614
const {date, disabledDate, value} = this.props
17-
const style: any = {};
15+
const style = {};
1816
const ndate = new Date(date)
1917
ndate.setMonth(month);
2018
style.disabled = typeof disabledDate === 'function' && disabledDate(ndate);
21-
style.current = deconstructDate(value).month === month;
19+
style.current = value && deconstructDate(value).month === month;
2220
return style;
2321
}
2422

25-
handleMonthTableClick(event: SyntheticMouseEvent) {
26-
const target: any = event.target;
23+
handleMonthTableClick(event) {
24+
const target = event.target;
2725
if (target.tagName !== 'A') return;
2826
if (hasClass(target.parentNode, 'disabled')) return;
2927
const column = target.parentNode.cellIndex;
@@ -66,8 +64,8 @@ export default class MonthTable extends Component {
6664
MonthTable.propTypes = {
6765
// current date, specific to view
6866
date: PropTypes.instanceOf(Date).isRequired,
69-
// user picked value
70-
value: PropTypes.instanceOf(Date).isRequired,
67+
// user picked value, value: Date|null
68+
value: PropTypes.instanceOf(Date),
7169
onPick: PropTypes.func.isRequired,
7270
// (Date)=>boolean
7371
disabledDate: PropTypes.func

src/date-picker/basic/YearTable.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export default class YearTable extends Component {
1818

1919
ndate.setFullYear(year);
2020
style.disabled = typeof disabledDate === 'function' && disabledDate(ndate);
21-
style.current = deconstructDate(value).year === year;
21+
style.current = value && deconstructDate(value).year === year;
2222

2323
return style;
2424
}
@@ -84,7 +84,7 @@ export default class YearTable extends Component {
8484
}
8585

8686
YearTable.propTypes = {
87-
value: PropTypes.instanceOf(Date).isRequired,
87+
value: PropTypes.instanceOf(Date),
8888
date: PropTypes.instanceOf(Date).isRequired,
8989
// (year: number)=>
9090
onPick: PropTypes.func.isRequired,

src/date-picker/panel/DatePanel.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ export default class DatePanel extends Component {
4949
}
5050

5151
componentWillReceiveProps(nextProps: any) {
52-
this.setState({ date: nextProps.value })
52+
let date = nextProps.value || new Date()
53+
this.setState({ date })
5354
}
5455

5556
resetDate() {
@@ -271,7 +272,6 @@ export default class DatePanel extends Component {
271272
const {month} = deconstructDate(date)
272273
const t = Locale.t
273274

274-
//todo: handle v-*
275275
return (
276276
<div
277277
ref="root"
@@ -413,6 +413,7 @@ export default class DatePanel extends Component {
413413

414414
DatePanel.propTypes = {
415415
// user picked date value
416+
// value: Date | null
416417
value: PropTypes.instanceOf(Date),
417418
// todo:
418419
onPick: PropTypes.func.isRequired,

src/date-picker/panel/DateRangePanel.jsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,10 @@ export default class DateRangePanel extends Component {
228228

229229
DateRangePanel.propTypes = {
230230
// user picked date value
231-
value: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
231+
/*
232+
value: null | [Date, null | false]
233+
*/
234+
value: PropTypes.any,
232235
// ([value1, value2]|null, isKeepPanel)=>()
233236
onPick: PropTypes.func.isRequired,
234237
showTime: PropTypes.bool,

0 commit comments

Comments
 (0)