| | |
| | | import React, { useState, useRef, useEffect, useMemo } from "react"; |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import { |
| | | Edit, |
| | | SimpleForm, |
| | |
| | | NumberField, |
| | | required, |
| | | useRecordContext, |
| | | DeleteButton, |
| | | useTheme, |
| | | useAuthProvider, |
| | | } from 'react-admin'; |
| | | import { useWatch, useFormContext } from "react-hook-form"; |
| | | import { Stack, Grid, Box, Typography, Card, CardContent } from '@mui/material'; |
| | | import { Stack, Grid, Box, Typography, Card, CardContent, Tabs, Tab } from '@mui/material'; |
| | | import * as Common from '@/utils/common'; |
| | | import { } from '@/config/setting'; |
| | | |
| | | const Settings = () => { |
| | | const authProvider = useAuthProvider(); |
| | | const navigate = useNavigate(); |
| | | const translate = useTranslate(); |
| | | const theme = useTheme(); |
| | | const [value, setValue] = React.useState(0); |
| | | |
| | | useEffect(() => { |
| | | authProvider.checkAuth().catch(() => { |
| | | navigate('/login'); |
| | | }); |
| | | }, [authProvider, navigate]); |
| | | |
| | | useEffect(() => { |
| | | }, [value]); |
| | | |
| | | return ( |
| | | <> |
| | | <Card> |
| | | <CardContent> |
| | | |
| | | <Card sx={{ backgroundColor: 'initial' }}> |
| | | <CardContent > |
| | | <Box |
| | | mt={2} |
| | | sx={{ |
| | | flexGrow: 1, |
| | | bgcolor: 'background.paper', |
| | | display: 'flex', |
| | | height: 224, |
| | | border: `1px solid #${theme[0] === 'light' ? 'ddd' : '333'}`, |
| | | borderRadius: 2 |
| | | }} |
| | | > |
| | | <Tabs |
| | | orientation="vertical" |
| | | variant="scrollable" |
| | | value={value} |
| | | onChange={(event, newValue) => { |
| | | setValue(newValue); |
| | | }} |
| | | indicatorColor="secondary" |
| | | textColor="inherit" |
| | | sx={{ |
| | | borderRight: 1, |
| | | borderColor: 'divider', |
| | | width: 150, |
| | | }} |
| | | > |
| | | <Tab |
| | | label={translate('settings.base')} |
| | | id='vertical-tab-0' |
| | | aria-controls='vertical-tabpanel-0' |
| | | /> |
| | | <Tab label={translate('settings.security')} |
| | | id='vertical-tab-1' |
| | | aria-controls='vertical-tabpanel-1' |
| | | /> |
| | | </Tabs> |
| | | <BaseSettings |
| | | value={value} |
| | | /> |
| | | <SecuritySettings |
| | | value={value} |
| | | /> |
| | | </Box> |
| | | </CardContent> |
| | | </Card> |
| | | </> |
| | | ) |
| | | } |
| | | |
| | | const BaseSettings = (props) => { |
| | | const { children, value, ...other } = props; |
| | | |
| | | return ( |
| | | <Box |
| | | hidden={value !== 0} |
| | | sx={{ p: 3 }} |
| | | {...other} |
| | | > |
| | | <Grid container spacing={6}> |
| | | <Grid item xs={12}> |
| | | {/* https://github.com/themeselection/materio-mui-nextjs-admin-template-free/blob/main/javascript-version/src/views/account-settings/account/AccountDetails.jsx */} |
| | | <Card> |
| | | <CardContent className='mbe-5'> |
| | | <Typography> |
| | | Base Settings |
| | | </Typography> |
| | | </CardContent> |
| | | </Card> |
| | | |
| | | </Grid> |
| | | </Grid> |
| | | </Box> |
| | | |
| | | ) |
| | | } |
| | | |
| | | const SecuritySettings = (props) => { |
| | | const { children, value, ...other } = props; |
| | | |
| | | return ( |
| | | <Box |
| | | hidden={value !== 1} |
| | | sx={{ p: 3 }} |
| | | {...other} |
| | | > |
| | | <Typography> |
| | | Security Settings |
| | | </Typography> |
| | | </Box> |
| | | |
| | | ) |
| | | } |
| | | |
| | | export default Settings; |