#
vincentlu
2025-02-11 2d1b39fae6abed7cda7bd5722fcea23fefdb6e12
rsf-admin/src/page/login/Login.jsx
@@ -7,14 +7,19 @@
    Button,
    TextField,
    Stack,
    Autocomplete
    Autocomplete,
    InputAdornment,
    IconButton,
} from '@mui/material';
import {
    useTranslate,
    useLogin,
    useNotify,
} from 'react-admin';
import { useForm, Controller } from 'react-hook-form';
import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
import ProviderChoices from "./ProviderChoices";
import Visibility from '@mui/icons-material/Visibility';
import VisibilityOff from '@mui/icons-material/VisibilityOff';
const Login = (props) => {
    const translate = useTranslate();
@@ -23,9 +28,10 @@
    const location = useLocation();
    const { tenantList } = props;
    const { control, watch, handleSubmit, setValue } = useForm();
    const { control, handleSubmit, watch, setValue, getValues } = useForm();
    const [loading, setLoading] = useState(false);
    const [showPassword, setShowPassword] = useState(false);
    const username = watch('username');
    const password = watch('password');
@@ -117,10 +123,11 @@
                        render={({ field }) => (
                            <TextField
                                {...field}
                                label={translate('ra.auth.username')}
                                label={translate("page.login.username")}
                                variant="standard"
                                disabled={loading}
                                autoFocus
                                autoComplete="off"
                            />
                        )}
                    />
@@ -133,23 +140,37 @@
                        render={({ field }) => (
                            <TextField
                                {...field}
                                label={translate('ra.auth.password')}
                                type="password"
                                label={translate("page.login.password")}
                                type={showPassword ? 'text' : 'password'}
                                variant="standard"
                                disabled={loading}
                                autoComplete="off"
                                InputProps={{
                                    endAdornment: (
                                        <InputAdornment position="end">
                                            <IconButton
                                                aria-label="toggle password visibility"
                                                onClick={() => setShowPassword((show) => !show)}
                                                onMouseDown={(event) => { event.preventDefault() }}
                                                edge="end"
                                            >
                                                {showPassword ? <VisibilityOff /> : <Visibility />}
                                            </IconButton>
                                        </InputAdornment>
                                    ),
                                }}
                            />
                        )}
                    />
                    <Box mt={10}></Box>
                    <Box />
                    <Button
                        type="submit"
                        variant="contained"
                        disabled={loading || !(tenantId && username && password)}
                        sx={{
                            backgroundColor: "#3D4BA7"
                            // backgroundColor: "#3D4BA7"
                        }}
                    >
                        {loading && <CircularProgress size={25} thickness={2} />}
@@ -158,6 +179,8 @@
                </Stack>
                <Box mt={1} mb={1} sx={{ textAlign: 'center' }}>or</Box>
                <ProviderChoices type="LOG IN" />
            </Box >
        </>
    )