mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-11-08 02:52:07 +08:00
53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import {
|
|
Button,
|
|
Dialog,
|
|
DialogActions,
|
|
DialogContent,
|
|
DialogTitle,
|
|
TextField,
|
|
} from '@mui/material'
|
|
import { useState } from 'react'
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
interface Props {
|
|
onConfirm: (passwd: string) => Promise<void>
|
|
}
|
|
|
|
export const PasswordInput = (props: Props) => {
|
|
const { onConfirm } = props
|
|
|
|
const { t } = useTranslation()
|
|
const [passwd, setPasswd] = useState('')
|
|
|
|
return (
|
|
<Dialog open={true} maxWidth="xs" fullWidth>
|
|
<DialogTitle>
|
|
{t('settings.modals.password.prompts.enterRoot')}
|
|
</DialogTitle>
|
|
|
|
<DialogContent>
|
|
<TextField
|
|
sx={{ mt: 1 }}
|
|
autoFocus
|
|
label={t('shared.labels.password')}
|
|
fullWidth
|
|
size="small"
|
|
type="password"
|
|
value={passwd}
|
|
onKeyDown={(e) => e.key === 'Enter' && onConfirm(passwd)}
|
|
onChange={(e) => setPasswd(e.target.value)}
|
|
></TextField>
|
|
</DialogContent>
|
|
|
|
<DialogActions>
|
|
<Button
|
|
onClick={async () => await onConfirm(passwd)}
|
|
variant="contained"
|
|
>
|
|
{t('shared.actions.confirm')}
|
|
</Button>
|
|
</DialogActions>
|
|
</Dialog>
|
|
)
|
|
}
|