-
Notifications
You must be signed in to change notification settings - Fork 865
Expand file tree
/
Copy pathcomposed-range-pickers.tsx
More file actions
124 lines (116 loc) · 3.3 KB
/
composed-range-pickers.tsx
File metadata and controls
124 lines (116 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import React, { useState } from "react";
import { isAfter, isBefore } from "date-fns";
import { useStyletron } from "baseui";
import { FormControl } from "baseui/form-control";
import { ArrowRight } from "baseui/icon";
import { DatePicker } from "baseui/datepicker";
import { TimePicker } from "baseui/timepicker";
const START_DATE = new Date(2019, 3, 1, 12, 0, 0);
const END_DATE = new Date(2019, 3, 10, 16, 0, 0);
export default function Example() {
const [css, theme] = useStyletron();
const [dates, setDates] = useState([START_DATE, END_DATE]);
return (
<div
className={css({
[theme.mediaQuery.medium]: {
display: "flex",
alignItems: "center",
},
})}
>
<div className={css({ display: "flex" })}>
<div
className={css({
width: "120px",
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="Start Date" caption="YYYY/MM/DD">
<DatePicker
value={dates}
onChange={({ date }) => setDates(date as Array<Date>)}
timeSelectStart
range
mask="9999/99/99"
displayValueAtRangeIndex={0}
placeholder="Start Date"
/>
</FormControl>
</div>
<div
className={css({
width: "120px",
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="Start Time" caption="HH:MM">
<TimePicker
value={dates[0]}
onChange={(time) => {
if (time) {
if (dates[1] && isAfter(time, dates[1])) {
setDates([time, time]);
} else {
setDates([time, dates[1]]);
}
}
}}
/>
</FormControl>
</div>
</div>
<div
className={css({
display: "none",
marginRight: theme.sizing.scale300,
[theme.mediaQuery.medium]: {
display: "block",
},
})}
>
<ArrowRight size={24} />
</div>
<div className={css({ display: "flex" })}>
<div
className={css({
width: "120px",
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="End Date" caption="yyyy/MM/DD">
<DatePicker
value={dates}
onChange={({ date }) => setDates(date as Array<Date>)}
timeSelectEnd
range
mask="9999/99/99"
displayValueAtRangeIndex={1}
placeholder="End Date"
/>
</FormControl>
</div>
<div
className={css({
width: "120px",
})}
>
<FormControl label="End Time" caption="HH:MM">
<TimePicker
value={dates[1]}
onChange={(time) => {
if (time) {
if (dates[0] && isBefore(time, dates[0])) {
setDates([time, time]);
} else {
setDates([dates[0], time]);
}
}
}}
/>
</FormControl>
</div>
</div>
</div>
);
}