/
composed-range-pickers.js
106 lines (97 loc) · 2.67 KB
/
composed-range-pickers.js
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
// @flow
import React, {useState} from 'react';
import {useStyletron} from 'baseui';
import {FormControl} from 'baseui/form-control';
import ArrowRight from 'baseui/icon/arrow-right';
import {Datepicker, formatDate} 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);
function formatDateAtIndex(
dates: ?Date | ?Array<Date>,
index: number,
) {
if (!dates || !Array.isArray(dates)) return '';
const date = dates[index];
if (!date) return '';
return formatDate(date, 'yyyy/MM/dd');
}
export default () => {
const [css, theme] = useStyletron();
const [dates, setDates] = useState<any>([START_DATE, END_DATE]);
return (
<div className={css({display: 'flex', alignItems: 'center'})}>
<div
className={css({
width: '120px',
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="Start Date" caption="YYYY/MM/DD">
<Datepicker
value={dates}
onChange={({date}) => setDates(date)}
formatDisplayValue={date => formatDateAtIndex(date, 0)}
timeSelectStart
range
mask="9999/99/99"
/>
</FormControl>
</div>
<div
className={css({
width: '120px',
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="Start Time" caption="HH:MM">
<TimePicker
value={dates[0]}
onChange={time => setDates([time, dates[1]])}
/>
</FormControl>
</div>
<div
className={css({
marginRight: theme.sizing.scale300,
})}
>
<ArrowRight size={24} />
</div>
<div
className={css({
width: '120px',
marginRight: theme.sizing.scale300,
})}
>
<FormControl label="End Date" caption="yyyy/MM/DD">
<Datepicker
value={dates}
onChange={({date}) => setDates(date)}
formatDisplayValue={date => formatDateAtIndex(date, 1)}
overrides={{
TimeSelectFormControl: {
props: {label: 'End time'},
},
}}
timeSelectEnd
range
mask="9999/99/99"
/>
</FormControl>
</div>
<div
className={css({
width: '120px',
})}
>
<FormControl label="End Time" caption="HH:MM">
<TimePicker
value={dates[1]}
onChange={time => setDates([dates[0], time])}
/>
</FormControl>
</div>
</div>
);
};