Skip to content

Commit 0aa518d

Browse files
waciimartijnrusschen
authored andcommitted
Allow utcOffset to be specified as a string (Hacker0x01#1500)
Moment, which ultimately consumes the offsets, accepts either numbers or strings. Updated prop types definitions and added a few tests.
1 parent 700d6fb commit 0aa518d

File tree

11 files changed

+70
-14
lines changed

11 files changed

+70
-14
lines changed

docs-site/bundle.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35901,7 +35901,10 @@
3590135901
todayButton: _propTypes2.default.string,
3590235902
useWeekdaysShort: _propTypes2.default.bool,
3590335903
formatWeekDay: _propTypes2.default.func,
35904-
utcOffset: _propTypes2.default.number,
35904+
utcOffset: _propTypes2.default.oneOfType([
35905+
_propTypes2.default.number,
35906+
_propTypes2.default.string
35907+
]),
3590535908
value: _propTypes2.default.string,
3590635909
weekLabel: _propTypes2.default.string,
3590735910
withPortal: _propTypes2.default.bool,
@@ -36859,7 +36862,10 @@
3685936862
useWeekdaysShort: _propTypes2.default.bool,
3686036863
formatWeekDay: _propTypes2.default.func,
3686136864
withPortal: _propTypes2.default.bool,
36862-
utcOffset: _propTypes2.default.number,
36865+
utcOffset: _propTypes2.default.oneOfType([
36866+
_propTypes2.default.number,
36867+
_propTypes2.default.string
36868+
]),
3686336869
weekLabel: _propTypes2.default.string,
3686436870
yearDropdownItemNumber: _propTypes2.default.number,
3686536871
setOpen: _propTypes2.default.func,
@@ -57849,7 +57855,10 @@
5784957855
selectsStart: _propTypes2.default.bool,
5785057856
showWeekNumbers: _propTypes2.default.bool,
5785157857
startDate: _propTypes2.default.object,
57852-
utcOffset: _propTypes2.default.number
57858+
utcOffset: _propTypes2.default.oneOfType([
57859+
_propTypes2.default.number,
57860+
_propTypes2.default.string
57861+
])
5785357862
};
5785457863
exports.default = Month;
5785557864

@@ -58071,7 +58080,10 @@
5807158080
selectsStart: _propTypes2.default.bool,
5807258081
showWeekNumber: _propTypes2.default.bool,
5807358082
startDate: _propTypes2.default.object,
58074-
utcOffset: _propTypes2.default.number
58083+
utcOffset: _propTypes2.default.oneOfType([
58084+
_propTypes2.default.number,
58085+
_propTypes2.default.string
58086+
])
5807558087
};
5807658088
exports.default = Week;
5807758089

@@ -58389,7 +58401,10 @@
5838958401
selectsEnd: _propTypes2.default.bool,
5839058402
selectsStart: _propTypes2.default.bool,
5839158403
startDate: _propTypes2.default.object,
58392-
utcOffset: _propTypes2.default.number
58404+
utcOffset: _propTypes2.default.oneOfType([
58405+
_propTypes2.default.number,
58406+
_propTypes2.default.string
58407+
])
5839358408
};
5839458409
exports.default = Day;
5839558410

docs/datepicker.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ General datepicker component.
7676
| `title` | `string` | | |
7777
| `todayButton` | `string` | | |
7878
| `useWeekdaysShort` | `bool` | | |
79-
| `utcOffset` | `number` | | |
79+
| `utcOffset` | `union(number\|string)` | | |
8080
| `value` | `string` | | |
8181
| `weekLabel` | `string` | | |
8282
| `withPortal` | `bool` | `false` | |

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ General datepicker component.
8888
| `todayButton` | `string` | | |
8989
| `useShortMonthInDropdown` | `bool` | | |
9090
| `useWeekdaysShort` | `bool` | | |
91-
| `utcOffset` | `number` | | |
91+
| `utcOffset` | `union(number\|string)` | | |
9292
| `value` | `string` | | |
9393
| `weekLabel` | `string` | | |
9494
| `withPortal` | `bool` | `false` | |

src/calendar.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export default class Calendar extends React.Component {
105105
useWeekdaysShort: PropTypes.bool,
106106
formatWeekDay: PropTypes.func,
107107
withPortal: PropTypes.bool,
108-
utcOffset: PropTypes.number,
108+
utcOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
109109
weekLabel: PropTypes.string,
110110
yearDropdownItemNumber: PropTypes.number,
111111
setOpen: PropTypes.func,

src/day.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default class Day extends React.Component {
2929
selectsEnd: PropTypes.bool,
3030
selectsStart: PropTypes.bool,
3131
startDate: PropTypes.object,
32-
utcOffset: PropTypes.number
32+
utcOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
3333
};
3434

3535
handleClick = event => {

src/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export default class DatePicker extends React.Component {
140140
todayButton: PropTypes.string,
141141
useWeekdaysShort: PropTypes.bool,
142142
formatWeekDay: PropTypes.func,
143-
utcOffset: PropTypes.number,
143+
utcOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
144144
value: PropTypes.string,
145145
weekLabel: PropTypes.string,
146146
withPortal: PropTypes.bool,

src/month.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export default class Month extends React.Component {
3333
selectsStart: PropTypes.bool,
3434
showWeekNumbers: PropTypes.bool,
3535
startDate: PropTypes.object,
36-
utcOffset: PropTypes.number
36+
utcOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
3737
};
3838

3939
handleDayClick = (day, event) => {

src/week.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default class Week extends React.Component {
2929
selectsStart: PropTypes.bool,
3030
showWeekNumber: PropTypes.bool,
3131
startDate: PropTypes.object,
32-
utcOffset: PropTypes.number
32+
utcOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
3333
};
3434

3535
handleDayClick = (day, event) => {

test/calendar_test.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,15 @@ describe("Calendar", function() {
3838
});
3939

4040
it("should start with the today date with specified time zone", function() {
41-
const utcOffset = 12;
42-
const calendar = getCalendar({ utcOffset });
41+
let utcOffset = 12;
42+
let calendar = getCalendar({ utcOffset });
43+
assert(
44+
utils.isSameDay(calendar.state().date, utils.newDateWithOffset(utcOffset))
45+
);
46+
47+
// using string offsets
48+
utcOffset = "+12:00";
49+
calendar = getCalendar({ utcOffset });
4350
assert(
4451
utils.isSameDay(calendar.state().date, utils.newDateWithOffset(utcOffset))
4552
);

test/date_utils_test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ describe("date_utils", function() {
109109
setUTCOffset(newDate("2016-02-10"), -210)
110110
)
111111
).to.be.false;
112+
expect(
113+
isSameUtcOffset(
114+
setUTCOffset(newDate("2016-02-10"), "-05:45"),
115+
setUTCOffset(newDate("2016-02-10"), "+01:00")
116+
)
117+
).to.be.false;
112118
});
113119

114120
it("should return true for equal utc offsets, regardless of dates", function() {
@@ -126,6 +132,18 @@ describe("date_utils", function() {
126132
setUTCOffset(newDate("2016-02-15"), 6)
127133
)
128134
).to.be.true;
135+
expect(
136+
isSameUtcOffset(
137+
setUTCOffset(newDate("2016-12-10"), "+04:00"),
138+
setUTCOffset(newDate("2016-02-15"), "+04:00")
139+
)
140+
).to.be.true;
141+
expect(
142+
isSameUtcOffset(
143+
setUTCOffset(newDate("2016-12-10"), "-02:00"),
144+
setUTCOffset(newDate("2016-02-15"), "-0200")
145+
)
146+
).to.be.true;
129147
});
130148
});
131149

0 commit comments

Comments
 (0)