Files
suwayomi-material-you-webui/src/components/sourceConfiguration/EditTextPreference.tsx

74 lines
2.7 KiB
TypeScript
Raw Normal View History

2021-09-13 19:18:21 +04:30
/*
* Copyright (C) Contributors to the Suwayomi project
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
2021-09-13 19:18:21 +04:30
import React, { useState } from 'react';
import ListItemText from '@mui/material/ListItemText';
import Dialog from '@mui/material/Dialog';
import DialogTitle from '@mui/material/DialogTitle';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogActions from '@mui/material/DialogActions';
import TextField from '@mui/material/TextField';
import Button from '@mui/material/Button';
import { useTranslation } from 'react-i18next';
import { ListItemButton } from '@mui/material';
import { EditTextPreferenceProps } from '@/typings';
2021-09-13 19:18:21 +04:30
export default function EditTextPreference(props: EditTextPreferenceProps) {
const { t } = useTranslation();
const { title, summary, dialogTitle, dialogMessage, currentValue, updateValue } = props;
2021-09-13 19:18:21 +04:30
const [internalCurrentValue, setInternalCurrentValue] = useState<string>(currentValue);
const [dialogOpen, setDialogOpen] = useState<boolean>(false);
const handleDialogCancel = () => {
setDialogOpen(false);
// reset the dialog
setInternalCurrentValue(currentValue);
};
const handleDialogSubmit = () => {
setDialogOpen(false);
updateValue(internalCurrentValue);
};
return (
<>
<ListItemButton onClick={() => setDialogOpen(true)}>
<ListItemText primary={title} secondary={summary} />
</ListItemButton>
2021-09-13 19:18:21 +04:30
<Dialog open={dialogOpen} onClose={handleDialogCancel}>
<DialogTitle>{dialogTitle}</DialogTitle>
2021-09-13 19:18:21 +04:30
<DialogContent>
<DialogContentText>{dialogMessage}</DialogContentText>
2021-09-13 19:18:21 +04:30
<TextField
autoFocus
margin="dense"
id="name"
type="text"
fullWidth
value={internalCurrentValue}
onChange={(e) => setInternalCurrentValue(e.target.value)}
/>
</DialogContent>
<DialogActions>
<Button onClick={handleDialogCancel} color="primary">
{t('global.button.cancel')}
2021-09-13 19:18:21 +04:30
</Button>
<Button onClick={handleDialogSubmit} color="primary">
{t('global.button.ok')}
2021-09-13 19:18:21 +04:30
</Button>
</DialogActions>
</Dialog>
</>
);
}