Massive/EditSet.tsx

104 lines
2.8 KiB
TypeScript
Raw Normal View History

2022-07-09 04:38:57 +00:00
import React, {useState} from 'react';
2022-07-09 05:13:13 +00:00
import {ScrollView, StyleSheet} from 'react-native';
2022-07-09 04:38:57 +00:00
import DateTimePickerModal from 'react-native-modal-datetime-picker';
import {Button, Dialog, Portal, TextInput} from 'react-native-paper';
import Set from './set';
2022-07-09 04:38:57 +00:00
import {format} from './time';
2022-07-03 01:50:01 +00:00
export default function EditSet({
set,
setSet,
2022-07-09 03:57:58 +00:00
onSave,
title,
saveText,
2022-07-10 04:22:19 +00:00
show,
setShow,
2022-07-03 01:50:01 +00:00
}: {
2022-07-09 03:57:58 +00:00
onSave: () => void;
set?: Set;
setSet: (set?: Set) => void;
2022-07-09 03:57:58 +00:00
title: string;
saveText: string;
2022-07-10 04:22:19 +00:00
show: boolean;
setShow: (show: boolean) => void;
2022-07-03 01:50:01 +00:00
}) {
2022-07-10 04:22:19 +00:00
const [showDate, setShowDate] = useState(false);
2022-07-09 04:38:57 +00:00
const onConfirm = (created: Date) => {
setSet({...set, created: created.toISOString()});
2022-07-10 04:22:19 +00:00
setShowDate(false);
2022-07-09 04:38:57 +00:00
};
2022-07-03 01:50:01 +00:00
return (
2022-07-05 00:43:23 +00:00
<Portal>
2022-07-10 04:22:19 +00:00
<Dialog visible={show} onDismiss={() => setShow(false)}>
2022-07-09 03:57:58 +00:00
<Dialog.Title>{title}</Dialog.Title>
2022-07-09 05:13:13 +00:00
<Dialog.ScrollArea>
<ScrollView>
<TextInput
style={styles.text}
autoFocus
label="Name *"
value={set?.name}
onChangeText={name => setSet({...set, name})}
autoCorrect={false}
/>
<TextInput
style={styles.text}
label="Reps *"
keyboardType="numeric"
value={set?.reps?.toString() || ''}
onChangeText={reps => setSet({...set, reps})}
/>
<TextInput
style={styles.text}
label="Weight *"
keyboardType="numeric"
value={set?.weight?.toString() || ''}
onChangeText={weight => setSet({...set, weight})}
onSubmitEditing={onSave}
/>
<TextInput
style={styles.text}
label="Unit (kg)"
value={set?.unit}
onChangeText={unit => setSet({...set, unit})}
onSubmitEditing={onSave}
/>
{set?.created && (
<>
2022-07-10 04:22:19 +00:00
<Button
icon="calendar-outline"
onPress={() => setShowDate(true)}>
2022-07-09 05:13:13 +00:00
{format(set.created)}
</Button>
<DateTimePickerModal
2022-07-10 04:22:19 +00:00
isVisible={showDate}
2022-07-09 05:13:13 +00:00
mode="datetime"
onConfirm={onConfirm}
2022-07-10 04:22:19 +00:00
onCancel={() => setShowDate(false)}
2022-07-09 05:13:13 +00:00
date={new Date(set.created)}
/>
</>
)}
</ScrollView>
</Dialog.ScrollArea>
<Dialog.Actions>
2022-07-10 04:22:19 +00:00
<Button icon="close" onPress={() => setShow(false)}>
2022-07-05 00:43:23 +00:00
Cancel
</Button>
2022-07-09 03:57:58 +00:00
<Button mode="contained" icon="save" onPress={onSave}>
{saveText}
</Button>
</Dialog.Actions>
</Dialog>
2022-07-05 00:43:23 +00:00
</Portal>
2022-07-03 01:50:01 +00:00
);
}
const styles = StyleSheet.create({
2022-07-04 04:03:48 +00:00
text: {
marginBottom: 10,
},
2022-07-03 01:50:01 +00:00
});