Massive/EditSet.tsx

80 lines
2.1 KiB
TypeScript
Raw Normal View History

import {format} from 'date-fns';
2022-07-09 03:57:58 +00:00
import React from 'react';
import {StyleSheet, Text} from 'react-native';
import {Button, Dialog, Portal, TextInput} from 'react-native-paper';
import Set from './set';
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-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-03 01:50:01 +00:00
}) {
return (
2022-07-05 00:43:23 +00:00
<Portal>
2022-07-09 03:57:58 +00:00
<Dialog visible={set ? true : false} onDismiss={() => setSet(undefined)}>
<Dialog.Title>{title}</Dialog.Title>
<Dialog.Content>
<TextInput
style={styles.text}
autoFocus
label="Name *"
2022-07-08 08:29:31 +00:00
value={set?.name}
onChangeText={name => setSet({...set, name})}
2022-07-07 00:45:45 +00:00
autoCorrect={false}
/>
<TextInput
style={styles.text}
label="Reps *"
keyboardType="numeric"
2022-07-08 08:29:31 +00:00
value={set?.reps?.toString() || ''}
onChangeText={reps => setSet({...set, reps})}
/>
<TextInput
style={styles.text}
label="Weight *"
keyboardType="numeric"
2022-07-08 08:29:31 +00:00
value={set?.weight?.toString() || ''}
onChangeText={weight => setSet({...set, weight})}
2022-07-09 03:57:58 +00:00
onSubmitEditing={onSave}
/>
<TextInput
style={styles.text}
label="Unit (kg)"
2022-07-08 08:29:31 +00:00
value={set?.unit}
onChangeText={unit => setSet({...set, unit})}
2022-07-09 03:57:58 +00:00
onSubmitEditing={onSave}
/>
2022-07-08 08:29:31 +00:00
<Text style={styles.text}>
2022-07-09 03:27:14 +00:00
{format(
set?.created ? new Date(set.created) : new Date(),
'PPPP p',
)}
2022-07-08 08:29:31 +00:00
</Text>
</Dialog.Content>
<Dialog.Actions>
<Button icon="close" onPress={() => setSet(undefined)}>
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
});