/* eslint-disable react-native/no-inline-styles */ import { SafeAreaView, ScrollView, StyleSheet, View, Text, StatusBar, Button, Platform, TextInput, useColorScheme, Switch, Alert, FlatList, } from 'react-native'; import DateTimePicker from '@react-native-community/datetimepicker'; import SegmentedControl from './SegmentedControl'; import {Colors} from 'react-native/Libraries/NewAppScreen'; import React, {useRef, useState} from 'react'; import {Picker} from 'react-native-windows'; import moment from 'moment-timezone'; import { ANDROID_MODE, DAY_OF_WEEK, IOS_MODE, ANDROID_DISPLAY, IOS_DISPLAY, } from '@react-native-community/datetimepicker/src/constants'; import * as RNLocalize from 'react-native-localize'; const timezone = [ 120, 0, -120, undefined, 'America/New_York', 'America/Vancouver', 'Europe/London', 'Europe/Istanbul', 'Asia/Hong_Kong', 'Australia/Brisbane', 'Australia/Sydney', 'Australia/Adelaide', ]; const ThemedText = (props) => { const isDarkMode = useColorScheme() === 'dark'; const textColorByMode = {color: isDarkMode ? Colors.white : Colors.black}; const TextElement = React.createElement(Text, props); return React.cloneElement(TextElement, { style: [props.style, textColorByMode], }); }; const ThemedTextInput = (props) => { const isDarkMode = useColorScheme() === 'dark'; const textColorByMode = {color: isDarkMode ? Colors.white : Colors.black}; const TextElement = React.createElement(TextInput, props); return React.cloneElement(TextElement, { style: [props.style, styles.textInput, textColorByMode], placeholderTextColor: isDarkMode ? Colors.white : Colors.black, }); }; const Info = ({testID, title, body}) => { return ( {title} {body} ); }; const MODE_VALUES = Platform.select({ ios: Object.values(IOS_MODE), android: Object.values(ANDROID_MODE), windows: [], }); const DISPLAY_VALUES = Platform.select({ ios: Object.values(IOS_DISPLAY), android: Object.values(ANDROID_DISPLAY), windows: [], }); const MINUTE_INTERVALS = [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]; const DESIGNS = ['default', 'material']; const INPUT_MODES = ['default', 'keyboard']; export const App = () => { // Sat, 13 Nov 2021 10:00:00 GMT (local: Saturday, November 13, 2021 11:00:00 AM GMT+01:00) const sourceMoment = moment.unix(1636765200); const sourceDate = sourceMoment.local().toDate(); const [date, setDate] = useState(sourceDate); const [tzOffsetInMinutes, setTzOffsetInMinutes] = useState(undefined); const [tzName, setTzName] = useState(RNLocalize.getTimeZone()); const [mode, setMode] = useState(MODE_VALUES[0]); const [show, setShow] = useState(false); const [textColor, setTextColor] = useState(); const [accentColor, setAccentColor] = useState(); const [display, setDisplay] = useState(DISPLAY_VALUES[0]); const [interval, setMinInterval] = useState(1); const [neutralButtonLabel, setNeutralButtonLabel] = useState(undefined); const [isFullscreen, setIsFullscreen] = useState(false); const [startOnYearSelection, setStartOnYearSelection] = useState(false); const [minimumDate, setMinimumDate] = useState(); const [maximumDate, setMaximumDate] = useState(); const [design, setDesign] = useState(DESIGNS[0]); const [inputMode, setInputMode] = useState(INPUT_MODES[0]); const [title, setTitle] = useState(''); const isMaterialDesign = design === 'material'; // Windows-specific const [time, setTime] = useState(undefined); const [maxDate] = useState(new Date('2021')); const [minDate] = useState(new Date('2018')); const [is24Hours, set24Hours] = useState(false); const [firstDayOfWeek, setFirstDayOfWeek] = useState(DAY_OF_WEEK.Sunday); const [dateFormat, setDateFormat] = useState('longdate'); const [dayOfWeekFormat, setDayOfWeekFormat] = useState( '{dayofweek.abbreviated(2)}', ); const scrollRef = useRef(null); const handleResetPress = () => { setDate(undefined); }; const onChange = (event, selectedDate) => { if (Platform.OS === 'android') { setShow(false); } if (event.type === 'dismissed') { Alert.alert( 'picker was dismissed', undefined, [ { text: 'great', }, ], {cancelable: true}, ); return; } if (event.type === 'neutralButtonPressed') { setDate(new Date(0)); } else { setDate(selectedDate); } }; const onTimeChange = (event: any, newTime?: Date) => { if (Platform.OS === 'windows') { setTime(newTime); } }; const isDarkMode = useColorScheme() === 'dark'; const backgroundStyle = { backgroundColor: isDarkMode ? Colors.dark : Colors.lighter, }; const renderItem = ({item}) => { const isNumber = typeof item === 'number'; const buttonTitle = isNumber ? item > 0 ? `+${item} mins` : `${item} mins` : item; return (