mirror of
https://github.com/D4M13N-D3V/comissions-app-ui.git
synced 2025-03-14 08:15:08 +00:00
223 lines
8.4 KiB
TypeScript
223 lines
8.4 KiB
TypeScript
// ** React Imports
|
|
import { ChangeEvent, MouseEvent, useState } from 'react'
|
|
|
|
// ** MUI Imports
|
|
import Box from '@mui/material/Box'
|
|
import Grid from '@mui/material/Grid'
|
|
import Avatar from '@mui/material/Avatar'
|
|
import Button from '@mui/material/Button'
|
|
import Divider from '@mui/material/Divider'
|
|
import InputLabel from '@mui/material/InputLabel'
|
|
import IconButton from '@mui/material/IconButton'
|
|
import Typography from '@mui/material/Typography'
|
|
import CardContent from '@mui/material/CardContent'
|
|
import FormControl from '@mui/material/FormControl'
|
|
import OutlinedInput from '@mui/material/OutlinedInput'
|
|
import InputAdornment from '@mui/material/InputAdornment'
|
|
|
|
// ** Icons Imports
|
|
import EyeOutline from 'mdi-material-ui/EyeOutline'
|
|
import KeyOutline from 'mdi-material-ui/KeyOutline'
|
|
import EyeOffOutline from 'mdi-material-ui/EyeOffOutline'
|
|
import LockOpenOutline from 'mdi-material-ui/LockOpenOutline'
|
|
|
|
interface State {
|
|
newPassword: string
|
|
currentPassword: string
|
|
showNewPassword: boolean
|
|
confirmNewPassword: string
|
|
showCurrentPassword: boolean
|
|
showConfirmNewPassword: boolean
|
|
}
|
|
|
|
const TabSecurity = () => {
|
|
// ** States
|
|
const [values, setValues] = useState<State>({
|
|
newPassword: '',
|
|
currentPassword: '',
|
|
showNewPassword: false,
|
|
confirmNewPassword: '',
|
|
showCurrentPassword: false,
|
|
showConfirmNewPassword: false
|
|
})
|
|
|
|
// Handle Current Password
|
|
const handleCurrentPasswordChange = (prop: keyof State) => (event: ChangeEvent<HTMLInputElement>) => {
|
|
setValues({ ...values, [prop]: event.target.value })
|
|
}
|
|
const handleClickShowCurrentPassword = () => {
|
|
setValues({ ...values, showCurrentPassword: !values.showCurrentPassword })
|
|
}
|
|
const handleMouseDownCurrentPassword = (event: MouseEvent<HTMLButtonElement>) => {
|
|
event.preventDefault()
|
|
}
|
|
|
|
// Handle New Password
|
|
const handleNewPasswordChange = (prop: keyof State) => (event: ChangeEvent<HTMLInputElement>) => {
|
|
setValues({ ...values, [prop]: event.target.value })
|
|
}
|
|
const handleClickShowNewPassword = () => {
|
|
setValues({ ...values, showNewPassword: !values.showNewPassword })
|
|
}
|
|
const handleMouseDownNewPassword = (event: MouseEvent<HTMLButtonElement>) => {
|
|
event.preventDefault()
|
|
}
|
|
|
|
// Handle Confirm New Password
|
|
const handleConfirmNewPasswordChange = (prop: keyof State) => (event: ChangeEvent<HTMLInputElement>) => {
|
|
setValues({ ...values, [prop]: event.target.value })
|
|
}
|
|
const handleClickShowConfirmNewPassword = () => {
|
|
setValues({ ...values, showConfirmNewPassword: !values.showConfirmNewPassword })
|
|
}
|
|
const handleMouseDownConfirmNewPassword = (event: MouseEvent<HTMLButtonElement>) => {
|
|
event.preventDefault()
|
|
}
|
|
|
|
return (
|
|
<form>
|
|
<CardContent sx={{ paddingBottom: 0 }}>
|
|
<Grid container spacing={5}>
|
|
<Grid item xs={12} sm={6}>
|
|
<Grid container spacing={5}>
|
|
<Grid item xs={12} sx={{ marginTop: 4.75 }}>
|
|
<FormControl fullWidth>
|
|
<InputLabel htmlFor='account-settings-current-password'>Current Password</InputLabel>
|
|
<OutlinedInput
|
|
label='Current Password'
|
|
value={values.currentPassword}
|
|
id='account-settings-current-password'
|
|
type={values.showCurrentPassword ? 'text' : 'password'}
|
|
onChange={handleCurrentPasswordChange('currentPassword')}
|
|
endAdornment={
|
|
<InputAdornment position='end'>
|
|
<IconButton
|
|
edge='end'
|
|
aria-label='toggle password visibility'
|
|
onClick={handleClickShowCurrentPassword}
|
|
onMouseDown={handleMouseDownCurrentPassword}
|
|
>
|
|
{values.showCurrentPassword ? <EyeOutline /> : <EyeOffOutline />}
|
|
</IconButton>
|
|
</InputAdornment>
|
|
}
|
|
/>
|
|
</FormControl>
|
|
</Grid>
|
|
|
|
<Grid item xs={12} sx={{ marginTop: 6 }}>
|
|
<FormControl fullWidth>
|
|
<InputLabel htmlFor='account-settings-new-password'>New Password</InputLabel>
|
|
<OutlinedInput
|
|
label='New Password'
|
|
value={values.newPassword}
|
|
id='account-settings-new-password'
|
|
onChange={handleNewPasswordChange('newPassword')}
|
|
type={values.showNewPassword ? 'text' : 'password'}
|
|
endAdornment={
|
|
<InputAdornment position='end'>
|
|
<IconButton
|
|
edge='end'
|
|
onClick={handleClickShowNewPassword}
|
|
aria-label='toggle password visibility'
|
|
onMouseDown={handleMouseDownNewPassword}
|
|
>
|
|
{values.showNewPassword ? <EyeOutline /> : <EyeOffOutline />}
|
|
</IconButton>
|
|
</InputAdornment>
|
|
}
|
|
/>
|
|
</FormControl>
|
|
</Grid>
|
|
|
|
<Grid item xs={12}>
|
|
<FormControl fullWidth>
|
|
<InputLabel htmlFor='account-settings-confirm-new-password'>Confirm New Password</InputLabel>
|
|
<OutlinedInput
|
|
label='Confirm New Password'
|
|
value={values.confirmNewPassword}
|
|
id='account-settings-confirm-new-password'
|
|
type={values.showConfirmNewPassword ? 'text' : 'password'}
|
|
onChange={handleConfirmNewPasswordChange('confirmNewPassword')}
|
|
endAdornment={
|
|
<InputAdornment position='end'>
|
|
<IconButton
|
|
edge='end'
|
|
aria-label='toggle password visibility'
|
|
onClick={handleClickShowConfirmNewPassword}
|
|
onMouseDown={handleMouseDownConfirmNewPassword}
|
|
>
|
|
{values.showConfirmNewPassword ? <EyeOutline /> : <EyeOffOutline />}
|
|
</IconButton>
|
|
</InputAdornment>
|
|
}
|
|
/>
|
|
</FormControl>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<Grid
|
|
item
|
|
sm={6}
|
|
xs={12}
|
|
sx={{ display: 'flex', marginTop: [7.5, 2.5], alignItems: 'center', justifyContent: 'center' }}
|
|
>
|
|
<img width={183} alt='avatar' height={256} src='/images/pages/pose-m-1.png' />
|
|
</Grid>
|
|
</Grid>
|
|
</CardContent>
|
|
|
|
<Divider sx={{ margin: 0 }} />
|
|
|
|
<CardContent>
|
|
<Box sx={{ mt: 1.75, display: 'flex', alignItems: 'center' }}>
|
|
<KeyOutline sx={{ marginRight: 3 }} />
|
|
<Typography variant='h6'>Two-factor authentication</Typography>
|
|
</Box>
|
|
|
|
<Box sx={{ mt: 5.75, display: 'flex', justifyContent: 'center' }}>
|
|
<Box
|
|
sx={{
|
|
maxWidth: 368,
|
|
display: 'flex',
|
|
textAlign: 'center',
|
|
alignItems: 'center',
|
|
flexDirection: 'column'
|
|
}}
|
|
>
|
|
<Avatar
|
|
variant='rounded'
|
|
sx={{ width: 48, height: 48, color: 'common.white', backgroundColor: 'primary.main' }}
|
|
>
|
|
<LockOpenOutline sx={{ fontSize: '1.75rem' }} />
|
|
</Avatar>
|
|
<Typography sx={{ fontWeight: 600, marginTop: 3.5, marginBottom: 3.5 }}>
|
|
Two factor authentication is not enabled yet.
|
|
</Typography>
|
|
<Typography variant='body2'>
|
|
Two-factor authentication adds an additional layer of security to your account by requiring more than just
|
|
a password to log in. Learn more.
|
|
</Typography>
|
|
</Box>
|
|
</Box>
|
|
|
|
<Box sx={{ mt: 11 }}>
|
|
<Button variant='contained' sx={{ marginRight: 3.5 }}>
|
|
Save Changes
|
|
</Button>
|
|
<Button
|
|
type='reset'
|
|
variant='outlined'
|
|
color='secondary'
|
|
onClick={() => setValues({ ...values, currentPassword: '', newPassword: '', confirmNewPassword: '' })}
|
|
>
|
|
Reset
|
|
</Button>
|
|
</Box>
|
|
</CardContent>
|
|
</form>
|
|
)
|
|
}
|
|
export default TabSecurity
|