|
|
@ -7,6 +7,7 @@ import { |
|
|
|
View, |
|
|
|
Platform, |
|
|
|
TouchableOpacity, |
|
|
|
Alert, |
|
|
|
} from "react-native"; |
|
|
|
import { MaterialCommunityIcons } from "@expo/vector-icons"; |
|
|
|
import DateTimePicker from "@react-native-community/datetimepicker"; |
|
|
@ -14,9 +15,10 @@ import DateTimePicker from "@react-native-community/datetimepicker"; |
|
|
|
import moment from "moment"; |
|
|
|
import colors from "../../config/colors"; |
|
|
|
import { dimensions } from "../../config/dimensions"; |
|
|
|
import { showMessage } from "react-native-flash-message"; |
|
|
|
|
|
|
|
const FormDatePicker = (props) => { |
|
|
|
const [disabled,setDisabled]=useState(props.disabled); |
|
|
|
const [disabled, setDisabled] = useState(props.disabled); |
|
|
|
|
|
|
|
const { textStyle, defaultDate } = props; |
|
|
|
const [date, setDate] = useState(moment(defaultDate)); |
|
|
@ -25,6 +27,19 @@ const FormDatePicker = (props) => { |
|
|
|
const [mode, setMode] = useState("date"); |
|
|
|
const [time, setTime] = useState(moment(defaultDate)); |
|
|
|
|
|
|
|
const validateTimeInput = (selectedDate) => { |
|
|
|
if (!(moment().isSameOrAfter(selectedDate)) && new Date(moment()).getDay() == new Date(date).getDay()) { |
|
|
|
Alert.alert( |
|
|
|
"Horário inválido", |
|
|
|
"Selecione um horário válido", |
|
|
|
[ |
|
|
|
{ text: "OK", onPress: () => renderDatePicker() } |
|
|
|
] |
|
|
|
); |
|
|
|
return false; |
|
|
|
} |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
const onChange = (e, selectedDate) => { |
|
|
|
setAuxDate(moment(selectedDate)); // variavel auxiliar para não alterar a data com a rolagem, apenas com o done
|
|
|
@ -32,17 +47,21 @@ const FormDatePicker = (props) => { |
|
|
|
|
|
|
|
const androidOnChange = (e, selectedDate) => { |
|
|
|
setShow(false); |
|
|
|
|
|
|
|
if (selectedDate) { |
|
|
|
if (mode == "date") { |
|
|
|
setDate(moment(selectedDate)); |
|
|
|
props.onDateChange(selectedDate); |
|
|
|
setMode("time"); |
|
|
|
setShow(true); // to show the picker again in time mode
|
|
|
|
} else { |
|
|
|
setTime(moment(selectedDate)); |
|
|
|
props.onTimeChange(selectedDate); |
|
|
|
setShow(false); |
|
|
|
setMode("date"); |
|
|
|
} |
|
|
|
else { |
|
|
|
if (validateTimeInput(selectedDate)) { |
|
|
|
setTime(moment(selectedDate)); |
|
|
|
props.onTimeChange(selectedDate); |
|
|
|
setShow(false); |
|
|
|
setMode("date"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
@ -61,11 +80,14 @@ const FormDatePicker = (props) => { |
|
|
|
setShow(true); // to show the picker again in time mode
|
|
|
|
} |
|
|
|
else { |
|
|
|
setTime(moment(auxDate)); |
|
|
|
props.onTimeChange(auxDate); |
|
|
|
setShow(false); |
|
|
|
setMode("date"); |
|
|
|
if (validateTimeInput(auxDate)) { |
|
|
|
setTime(moment(auxDate)); |
|
|
|
props.onTimeChange(auxDate); |
|
|
|
setShow(false); |
|
|
|
setMode("date"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
const renderDatePicker = () => { |
|
|
@ -192,7 +214,7 @@ FormDatePicker.defaultProps = { |
|
|
|
const styles = StyleSheet.create({ |
|
|
|
btnCancel: { |
|
|
|
left: 0, |
|
|
|
}, |
|
|
|
}, |
|
|
|
btnDone: { |
|
|
|
right: 0, |
|
|
|
}, |
|
|
|