-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDatePickerModal.tsx
More file actions
84 lines (75 loc) · 2.08 KB
/
DatePickerModal.tsx
File metadata and controls
84 lines (75 loc) · 2.08 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
import React, { useState, useEffect } from "react";
import { View, Platform, Modal, TouchableOpacity, Text } from "react-native";
import DateTimePicker, {
DateTimePickerAndroid,
} from "@react-native-community/datetimepicker";
const DatePickerModal = ({
visible,
date,
minimumDate,
onConfirm,
onCancel,
}) => {
const [tempDate, setTempDate] = useState(date);
useEffect(() => {
setTempDate(date);
}, [date]);
// 🔥 Android는 visible true 될 때 즉시 open
if (Platform.OS === "android" && visible) {
DateTimePickerAndroid.open({
value: date,
mode: "date",
is24Hour: true,
minimumDate: minimumDate,
onChange: (event, selectedDate) => {
if (event.type === "set" && selectedDate) {
onConfirm(selectedDate);
}
onCancel();
},
});
return null; // Android는 Modal 안 씀
}
if (!visible) return null;
// iOS
return (
<Modal transparent animationType="slide">
<View style={{ flex: 1, justifyContent: "flex-end" }}>
<View style={{ backgroundColor: "#fff", paddingBottom: 20 }}>
<View
style={{
flexDirection: "row",
justifyContent: "space-between",
padding: 15,
}}
>
<TouchableOpacity onPress={onCancel}>
<Text>취소</Text>
</TouchableOpacity>
<TouchableOpacity
onPress={() => {
onConfirm(tempDate);
onCancel();
}}
>
<Text>확인</Text>
</TouchableOpacity>
</View>
<DateTimePicker
value={tempDate}
mode="date"
display="spinner"
locale="ko-KR"
themeVariant="light"
style={{ color: 'black', fontSize: 18 }}
minimumDate={minimumDate}
onChange={(event, selectedDate) => {
if (selectedDate) setTempDate(selectedDate);
}}
/>
</View>
</View>
</Modal>
);
};
export default DatePickerModal;