From 0e81cd8ef21ce7ed904eabebc46ee36d135f623f Mon Sep 17 00:00:00 2001 From: Greg Bowne Date: Tue, 25 Jul 2023 14:48:43 -0700 Subject: [PATCH 1/2] Adding initial login UI and dropdown icon state change --- src/components/Dropdown/Dropdown.js | 24 +++++++---- src/pages/Login/Login.jsx | 67 ++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 10 deletions(-) diff --git a/src/components/Dropdown/Dropdown.js b/src/components/Dropdown/Dropdown.js index 54dd59b..c98a5f9 100644 --- a/src/components/Dropdown/Dropdown.js +++ b/src/components/Dropdown/Dropdown.js @@ -1,4 +1,5 @@ -import * as React from 'react'; +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import Box from '@mui/material/Box'; import Avatar from '@mui/material/Avatar'; import Menu from '@mui/material/Menu'; @@ -8,25 +9,32 @@ import Divider from '@mui/material/Divider'; import IconButton from '@mui/material/IconButton'; import Tooltip from '@mui/material/Tooltip'; import Settings from '@mui/icons-material/Settings'; -import Logout from '@mui/icons-material/Logout'; +import LogoutIcon from '@mui/icons-material/Logout'; import LoginIcon from '@mui/icons-material/Login'; import HelpIcon from '@mui/icons-material/Help'; import MessageIcon from '@mui/icons-material/Message'; export default function Dropdown() { - const [anchorEl, setAnchorEl] = React.useState(null); - const [logIn, setLogIn] = React.useState(true); - const open = Boolean(anchorEl); + const [anchorEl, setAnchorEl] = useState(null); + const [loggedIn, setLoggedIn] = useState(true); // Change the state name to 'loggedIn' + const open = Boolean(anchorEl); + const navigate = useNavigate(); + const handleClick = (event) => { setAnchorEl(event.currentTarget); }; + const handleClose = () => { setAnchorEl(null); }; const handleAccount = () => { - logIn ? setLogIn(false) : setLogIn(true); + setLoggedIn(!loggedIn); // Toggle the loggedIn state + if (!loggedIn) { + navigate('/login'); // Navigate to the login route + } }; + return ( Settings - {logIn ? ( + {loggedIn ? ( // Use the 'loggedIn' state to conditionally render the Logout/Login menu item - + Logout diff --git a/src/pages/Login/Login.jsx b/src/pages/Login/Login.jsx index cd85a1e..640a975 100644 --- a/src/pages/Login/Login.jsx +++ b/src/pages/Login/Login.jsx @@ -1,7 +1,70 @@ -import React from 'react'; +import React, { useState } from 'react'; +import axios from 'axios'; +import { IconButton, InputAdornment, TextField } from '@mui/material'; +import { Visibility, VisibilityOff } from '@mui/icons-material'; function Login() { - return
Login
; + const [usernameOrEmail, setUsernameOrEmail] = useState(''); + const [password, setPassword] = useState(''); + const [showPassword, setShowPassword] = useState(false); + const [rememberMe, setRememberMe] = useState(false); + + const handleLogin = async () => { + try { + const response = await axios.post('/api/login', { + usernameOrEmail, + password, + rememberMe, + }); + if (response.status === 200) { + window.location.href = '/'; // Redirect to the desired page + } + } catch (error) { + console.error(error); + } + }; + + return ( +
+ setUsernameOrEmail(e.target.value)} + /> + setPassword(e.target.value)} + InputProps={{ + endAdornment: ( + + setShowPassword(!showPassword)} + onMouseDown={(e) => e.preventDefault()} + > + {showPassword ? ( + + ) : ( + + )} + + + ), + }} + /> + + Forgot Password + +
+ ); } export default Login; From 4740dc452c2f0c00369dfc8b0eee339deeb9d4f8 Mon Sep 17 00:00:00 2001 From: Greg Bowne Date: Tue, 25 Jul 2023 14:54:07 -0700 Subject: [PATCH 2/2] added missing prettier write --- src/components/Dropdown/Dropdown.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/Dropdown/Dropdown.js b/src/components/Dropdown/Dropdown.js index c98a5f9..a42b9f4 100644 --- a/src/components/Dropdown/Dropdown.js +++ b/src/components/Dropdown/Dropdown.js @@ -17,8 +17,8 @@ import MessageIcon from '@mui/icons-material/Message'; export default function Dropdown() { const [anchorEl, setAnchorEl] = useState(null); const [loggedIn, setLoggedIn] = useState(true); // Change the state name to 'loggedIn' - const open = Boolean(anchorEl); - const navigate = useNavigate(); + const open = Boolean(anchorEl); + const navigate = useNavigate(); const handleClick = (event) => { setAnchorEl(event.currentTarget); @@ -29,10 +29,10 @@ export default function Dropdown() { }; const handleAccount = () => { - setLoggedIn(!loggedIn); // Toggle the loggedIn state - if (!loggedIn) { - navigate('/login'); // Navigate to the login route - } + setLoggedIn(!loggedIn); // Toggle the loggedIn state + if (!loggedIn) { + navigate('/login'); // Navigate to the login route + } }; return (