Skip to content

Commit cb92e66

Browse files
aijmartijnrusschen
authored andcommitted
Change default back to local time (Hacker0x01#1066)
* Change default back to local time * unit test
1 parent 0a0e0f3 commit cb92e66

File tree

5 files changed

+28
-25
lines changed

5 files changed

+28
-25
lines changed

src/calendar.jsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import React from 'react'
66
import PropTypes from 'prop-types'
77
import classnames from 'classnames'
88
import {
9-
getUTCOffset,
10-
newDateWithOffset,
9+
now,
1110
setMonth,
1211
getMonth,
1312
addMonths,
@@ -100,7 +99,6 @@ export default class Calendar extends React.Component {
10099
static get defaultProps () {
101100
return {
102101
onDropdownFocus: () => {},
103-
utcOffset: getUTCOffset(),
104102
monthsShown: 1,
105103
forceShowMonthNavigation: false
106104
}
@@ -150,7 +148,7 @@ export default class Calendar extends React.Component {
150148
const { preSelection, selected, openToDate, utcOffset } = this.props
151149
const minDate = getEffectiveMinDate(this.props)
152150
const maxDate = getEffectiveMaxDate(this.props)
153-
const current = newDateWithOffset(utcOffset)
151+
const current = now(utcOffset)
154152
const initialDate = openToDate || selected || preSelection
155153
if (initialDate) {
156154
return initialDate
@@ -306,7 +304,7 @@ export default class Calendar extends React.Component {
306304
return (
307305
<div
308306
className="react-datepicker__today-button"
309-
onClick={e => this.props.onSelect(getStartOfDate(newDateWithOffset(this.props.utcOffset)), e)}>
307+
onClick={e => this.props.onSelect(getStartOfDate(now(this.props.utcOffset)), e)}>
310308
{this.props.todayButton}
311309
</div>
312310
)

src/date_utils.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ export function newDateWithOffset (utcOffset) {
5454
return moment().utc().utcOffset(utcOffset)
5555
}
5656

57+
export function now (maybeFixedUtcOffset) {
58+
if (maybeFixedUtcOffset == null) {
59+
return newDate()
60+
}
61+
return newDateWithOffset(maybeFixedUtcOffset)
62+
}
63+
5764
export function cloneDate (date) {
5865
return date.clone()
5966
}

src/datepicker.jsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ import PopperComponent, { popperPlacementPositions } from './popper_component'
55
import classnames from 'classnames'
66
import {
77
newDate,
8-
newDateWithOffset,
8+
now,
99
cloneDate,
10-
getUTCOffset,
1110
isMoment,
1211
isDate,
1312
isBefore,
@@ -136,7 +135,6 @@ export default class DatePicker extends React.Component {
136135
onSelect () {},
137136
onClickOutside () {},
138137
onMonthChange () {},
139-
utcOffset: getUTCOffset(),
140138
monthsShown: 1,
141139
withPortal: false,
142140
shouldCloseOnSelect: true,
@@ -166,8 +164,7 @@ export default class DatePicker extends React.Component {
166164
this.props.openToDate ? newDate(this.props.openToDate)
167165
: this.props.selectsEnd && this.props.startDate ? newDate(this.props.startDate)
168166
: this.props.selectsStart && this.props.endDate ? newDate(this.props.endDate)
169-
: (typeof this.props.utcOffset !== 'undefined') ? newDateWithOffset(this.props.utcOffset)
170-
: newDate()
167+
: now(this.props.utcOffset)
171168
)
172169

173170
calcInitialState = () => {

src/day.jsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ import React from 'react'
22
import PropTypes from 'prop-types'
33
import classnames from 'classnames'
44
import {
5-
getUTCOffset,
65
getDay,
76
getMonth,
87
getDate,
9-
newDateWithOffset,
8+
now,
109
isMoment,
1110

1211
isSameDay,
@@ -34,10 +33,6 @@ export default class Day extends React.Component {
3433
utcOffset: PropTypes.number
3534
}
3635

37-
static defaultProps = {
38-
utcOffset: getUTCOffset()
39-
}
40-
4136
handleClick = (event) => {
4237
if (!this.isDisabled() && this.props.onClick) {
4338
this.props.onClick(event)
@@ -179,7 +174,7 @@ export default class Day extends React.Component {
179174
'react-datepicker__day--in-selecting-range': this.isInSelectingRange(),
180175
'react-datepicker__day--selecting-range-start': this.isSelectingRangeStart(),
181176
'react-datepicker__day--selecting-range-end': this.isSelectingRangeEnd(),
182-
'react-datepicker__day--today': this.isSameDay(newDateWithOffset(this.props.utcOffset)),
177+
'react-datepicker__day--today': this.isSameDay(now(this.props.utcOffset)),
183178
'react-datepicker__day--weekend': this.isWeekend(),
184179
'react-datepicker__day--outside-month': this.isOutsideMonth()
185180
}, this.getHighLightedClass('react-datepicker__day--highlighted'))

test/datepicker_test.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -335,23 +335,18 @@ describe('DatePicker', () => {
335335
var m = utils.newDate()
336336
var copyM = utils.cloneDate(m)
337337
var testFormat = 'YYYY-MM-DD'
338+
var exactishFormat = 'YYYY-MM-DD HH: ZZ'
338339
var callback = sandbox.spy()
339340
var datePicker = TestUtils.renderIntoDocument(
340341
<DatePicker selected={m}
341342
onChange={callback}
342-
inline={opts.inline}
343-
excludeDates={opts.excludeDates}
344-
filterDate={opts.filterDate}
345-
minDate={opts.minDate}
346-
maxDate={opts.maxDate}
347-
monthsShown={opts.monthsShown}
348-
shouldCloseOnSelect={opts.shouldCloseOnSelect}/>
343+
{...opts}/>
349344
)
350345
var dateInput = datePicker.input
351346
var nodeInput = ReactDOM.findDOMNode(dateInput)
352347
TestUtils.Simulate.focus(nodeInput)
353348
return {
354-
m, copyM, testFormat, callback, datePicker, dateInput, nodeInput
349+
m, copyM, testFormat, exactishFormat, callback, datePicker, dateInput, nodeInput
355350
}
356351
}
357352
it('should handle onInputKeyDown ArrowLeft', () => {
@@ -499,6 +494,17 @@ describe('DatePicker', () => {
499494
TestUtils.Simulate.keyDown(data.nodeInput, getKey('ArrowLeft'))
500495
expect(data.datePicker.state.open).to.be.true
501496
})
497+
it('should default to the current day on Enter', () => {
498+
const data = getOnInputKeyDownStuff({selected: null})
499+
TestUtils.Simulate.keyDown(data.nodeInput, getKey('Enter'))
500+
expect(data.callback.calledOnce).to.be.true
501+
const selected = data.callback.getCall(0).args[0]
502+
expect(
503+
utils.formatDate(selected, data.exactishFormat)
504+
).to.equal(utils.formatDate(data.copyM, data.exactishFormat))
505+
expect(selected.isLocal()).to.equal(true)
506+
})
507+
502508
it('should autofocus the input given the autoFocus prop', () => {
503509
var div = document.createElement('div')
504510
document.body.appendChild(div)

0 commit comments

Comments
 (0)