aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/Login
diff options
context:
space:
mode:
authordan <[email protected]>2023-08-28 10:55:50 -0400
committerdan <[email protected]>2023-08-28 10:55:50 -0400
commit7c9345f41d9c86142019cce05ca0495408b01730 (patch)
tree45da541a80047da04191c48accee490447f8a234 /src/pages/Login
parentf8cf6c21d238fea96192ad3f418ab7489092355f (diff)
downloaddraggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.tar.gz
draggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.tar.bz2
draggable-form-demo-7c9345f41d9c86142019cce05ca0495408b01730.zip
feat: skeleton of app
Diffstat (limited to 'src/pages/Login')
-rw-r--r--src/pages/Login/index.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/pages/Login/index.js b/src/pages/Login/index.js
new file mode 100644
index 0000000..1735d8e
--- /dev/null
+++ b/src/pages/Login/index.js
@@ -0,0 +1,52 @@
+import React, { useState } from 'react';
+import Box from '@mui/material/Box';
+import TextField from '@mui/material/TextField';
+import Button from '@mui/material/Button';
+import {Stack} from '@mui/system';
+
+export default function Login({ login }) {
+ const [user, setUser] = useState('');
+ const [password, setPassword] = useState('');
+ const [loginFailed, setLoginFailed] = useState(false);
+
+ const getApiKey = () => {
+ login(user, password)
+ .then(ok => {
+ setLoginFailed(!ok);
+ }
+ )
+ .catch(console.error);
+ };
+
+ return (
+ <Box
+ component="form"
+ sx={{
+ '& > :not(style)': { m: 1 },
+ flexGrow: 1,
+ }}
+ noValidate
+ autoComplete="off"
+ >
+ <Stack spacing={1} maxWidth='20em'>
+ <h2>Repeated Surveyer</h2>
+ <h3>Login</h3>
+ <TextField
+ label='Email Address'
+ type='text'
+ value={user}
+ onChange={e => setUser(e.target.value.trim())}
+ />
+ <TextField
+ label='Password'
+ type='password'
+ value={password}
+ onChange={e => setPassword(e.target.value)}
+ />
+ <Button onClick={() => getApiKey()}>Login</Button>
+ {loginFailed && <b>Login Failed</b>}
+ </Stack>
+ </Box>
+ );
+}
+