Skip to content
Snippets Groups Projects
Commit f29da43a authored by Defendi Alberto's avatar Defendi Alberto
Browse files

Merge branch 'dev' into 'master'

Basic form api and implement cookie entrypoint

See merge request !13
parents 18518edb 83345f08
No related branches found
No related tags found
1 merge request!13Basic form api and implement cookie entrypoint
Pipeline #11662 failed
Showing
with 509 additions and 86 deletions
......@@ -138,4 +138,5 @@ npm-debug.log*
yarn-debug.log*
yarn-error.log*
yarn.lock
.docz/
\ No newline at end of file
.docz/
._.DS_Store
\ No newline at end of file
......@@ -48,3 +48,4 @@ yarn start
[react calendar app](https://codesandbox.io/s/kkyvoj97pv?from-embed=&file=/src/index.js)
[Typescript cheatsheet](https://github.com/typescript-cheatsheets/react/blob/main/README.md#hooks)
\ No newline at end of file
......@@ -3,6 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"@hookform/devtools": "^2.2.1",
"@material-ui/core": "^4.11.3",
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
......@@ -12,10 +13,13 @@
"@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0",
"@types/react-router-dom": "^5.1.7",
"axios": "^0.21.1",
"docz": "^2.3.1",
"eslint-config-airbnb-typescript": "^12.3.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-hook-form": "^6.15.5",
"react-intl": "^5.15.5",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"typescript": "^4.1.2"
......
import React, { FC } from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import { HomePage } from './components/HomePage/HomePage';
import { AuthUser } from './components/AuthUser/AuthUser';
import { LandingPage } from './components/LandingPage/LandingPage';
export const App: FC = () => (
<Router>
<Switch>
<Route path="/">
<div data-testid="App">
<AuthUser />
</div>
</Route>
</Switch>
<div data-testid="App">
<Switch>
<Route path="/auth" component={AuthUser} />
<Route exact path="/" component={LandingPage} />
<Route exact path="/home" component={HomePage} />
</Switch>
</div>
</Router>
);
import React, { FC, useEffect } from 'react';
import axios from 'axios';
import Container from '@material-ui/core/Container';
import { SignInForm } from './SignInForm/SignInForm';
export const AuthUser: FC = () => {
useEffect(() => {
fetch('/api/web/csrf')
.then((response) => response.json())
.then((data) => sessionStorage.setItem('token', data.token));
axios
.get('api/web/csrf')
.then((response) => {
// Check this https://stackoverflow.com/questions/39254562/csrf-with-django-reactredux-using-axios
axios.defaults.headers.common['X-CSRFTOKEN'] = response.data.token;
})
.catch((error) => error);
}, []);
return (
<Container maxWidth="sm">
......
import React, { FC } from 'react';
import { TextField } from '@material-ui/core';
import { Control, Controller, FieldValues } from 'react-hook-form';
type Props = {
/**
* Name of the elemement. ex. email, password
*/
name: string;
label: string;
error: boolean;
errorMessage: string;
/**
* react-hook-form control
*/
control: Control<FieldValues> | undefined;
rules: Partial<unknown>;
};
export const InputField: FC<Props> = (props: Props) => {
const { name, label, error, errorMessage, control, rules } = props;
return (
<Controller
name={name}
control={control}
rules={rules}
render={({ onChange, value }) => (
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id={name}
label={label}
name={name}
onChange={onChange}
value={value}
autoComplete={name}
autoFocus
error={error}
helperText={error && errorMessage}
/>
)}
/>
);
};
import React, { useState } from 'react';
import React, { FC } from 'react';
import axios from 'axios';
import { SubmitHandler, useForm } from 'react-hook-form';
import { useIntl } from 'react-intl';
import { createStyles, makeStyles, Theme } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
import { isEmailValid } from './emailValidator';
import { Button } from '@material-ui/core';
import { DevTool } from '@hookform/devtools';
import { InputField } from './InputField';
const useStyles = makeStyles((theme: Theme) =>
createStyles({
......@@ -21,68 +24,87 @@ const useStyles = makeStyles((theme: Theme) =>
}),
);
export const SignInForm: React.FC = () => {
interface formData {
// TODO: real time form validation
export const SignInForm: FC = () => {
interface FormData {
email: string;
password: string;
errors: Array<string>;
}
const defaultValues: formData = {
const defaultValues: FormData = {
email: '',
password: '',
errors: [],
};
const [formValues, setFormValues] = useState<formData>(defaultValues);
const handleSubmit = (event: React.FormEvent): void => {
event.preventDefault();
const errors: Array<string> = [];
if (!isEmailValid(formValues.email)) errors.push('email');
};
const { control, errors, handleSubmit } = useForm<FormData>({
defaultValues,
});
const onSubmit: SubmitHandler<FormData> = (values: FormData) => {
axios
.post('/api/web/login', {
values,
})
.then((response) => {
// Handle server reponse
})
.catch((error) => {
// Handle error
});
};
const intl = useIntl();
const classes = useStyles();
return (
<form className={classes.form} onSubmit={handleSubmit} data-testid="Form">
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
autoFocus
onChange={(event) =>
setFormValues({ ...formValues, email: String(event.target.value) })
}
/>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="current-password"
onChange={(event) =>
setFormValues({ ...formValues, password: String(event.target.value) })
}
/>
<Button
type="submit"
fullWidth
variant="contained"
color="primary"
data-testid="Submit"
className={classes.submit}
<>
<form
className={classes.form}
onSubmit={handleSubmit(onSubmit)}
data-testid="Form"
>
Sign In
</Button>
</form>
<InputField
name="email"
control={control}
rules={{
validate: (value: string) =>
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(value),
required: {
value: true,
message: intl.formatMessage({ id: 'email' }),
},
}}
label={intl.formatMessage({ id: 'email' })}
error={!!errors.email}
errorMessage={intl.formatMessage({ id: 'email-error' })}
/>
<InputField
name="password"
control={control}
rules={{
minLength: 8,
maxLength: 60,
required: {
value: true,
message: intl.formatMessage({ id: 'password' }),
},
}}
label={intl.formatMessage({ id: 'password' })}
error={!!errors.password}
errorMessage={intl.formatMessage({ id: 'password-error' })}
/>
<Button
type="submit"
fullWidth
variant="contained"
color="primary"
data-testid="Submit"
className={classes.submit}
>
Sign In
</Button>
</form>
<DevTool control={control} /> {/* set up the dev tool */}
</>
);
};
import React, { FC } from 'react';
import { createStyles, Theme, makeStyles } from '@material-ui/core/styles';
import Drawer from '@material-ui/core/Drawer';
import AppBar from '@material-ui/core/AppBar';
import CssBaseline from '@material-ui/core/CssBaseline';
import Toolbar from '@material-ui/core/Toolbar';
import List from '@material-ui/core/List';
import Typography from '@material-ui/core/Typography';
import ListItem from '@material-ui/core/ListItem';
import ListItemText from '@material-ui/core/ListItemText';
const drawerWidth = 240;
const useStyles = makeStyles((theme: Theme) =>
createStyles({
root: {
display: 'flex',
},
appBar: {
zIndex: theme.zIndex.drawer + 1,
},
drawer: {
width: drawerWidth,
flexShrink: 0,
},
drawerPaper: {
width: drawerWidth,
},
drawerContainer: {
overflow: 'auto',
},
content: {
flexGrow: 1,
padding: theme.spacing(3),
},
}),
);
export const HomePage: FC = () => {
const classes = useStyles();
return (
<div className={classes.root}>
<CssBaseline />
<AppBar position="fixed" className={classes.appBar}>
<Toolbar>
<Typography variant="h6" noWrap>
Moveaid
</Typography>
</Toolbar>
</AppBar>
<Drawer
className={classes.drawer}
variant="permanent"
classes={{
paper: classes.drawerPaper,
}}
>
<Toolbar />
<div className={classes.drawerContainer}>
<List>
{['Reservation'].map((text) => (
<ListItem button key={text}>
<ListItemText primary={text} />
</ListItem>
))}
</List>
</div>
</Drawer>
<main className={classes.content}>
<Toolbar />
<Typography paragraph>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Rhoncus
dolor purus non enim praesent elementum facilisis leo vel. Risus at
ultrices mi tempus imperdiet. Semper risus in hendrerit gravida rutrum
quisque non tellus. Convallis convallis tellus id interdum velit
laoreet id donec ultrices. Odio morbi quis commodo odio aenean sed
adipiscing. Amet nisl suscipit adipiscing bibendum est ultricies
integer quis. Cursus euismod quis viverra nibh cras. Metus vulputate
eu scelerisque felis imperdiet proin fermentum leo. Mauris commodo
quis imperdiet massa tincidunt. Cras tincidunt lobortis feugiat
vivamus at augue. At augue eget arcu dictum varius duis at consectetur
lorem. Velit sed ullamcorper morbi tincidunt. Lorem donec massa sapien
faucibus et molestie ac.
</Typography>
<Typography paragraph>
Consequat mauris nunc congue nisi vitae suscipit. Fringilla est
ullamcorper eget nulla facilisi etiam dignissim diam. Pulvinar
elementum integer enim neque volutpat ac tincidunt. Ornare suspendisse
sed nisi lacus sed viverra tellus. Purus sit amet volutpat consequat
mauris. Elementum eu facilisis sed odio morbi. Euismod lacinia at quis
risus sed vulputate odio. Morbi tincidunt ornare massa eget egestas
purus viverra accumsan in. In hendrerit gravida rutrum quisque non
tellus orci ac. Pellentesque nec nam aliquam sem et tortor. Habitant
morbi tristique senectus et. Adipiscing elit duis tristique
sollicitudin nibh sit. Ornare aenean euismod elementum nisi quis
eleifend. Commodo viverra maecenas accumsan lacus vel facilisis. Nulla
posuere sollicitudin aliquam ultrices sagittis orci a.
</Typography>
</main>
</div>
);
};
import React, { FC } from 'react';
export const LandingPage: FC = () => (
<>
<section>
<h2>What is MoveAid?</h2>
<p>
MoveAid is a project born in order to satisfy a specific problem. There
are many senior citizens who are not able to drive and move from a place
to another easily, because of this they sometimes need to take private
Taxis or public means of transport which could be expensive and not
simple. MoveAid wants to be the solution to this problem offering free
drives (carried out by voulunteers) for those who need them to reach
medical visit, to go to the supermarket or to satisfy any other need.
</p>
</section>
<section>
<h2>How will MoveAid work?</h2>
<p>
MoveAid will be the platform that will allow people to ask for a drive
(either by phone or online) and organizations of voulenteers to organise
and accept drives.
</p>
</section>
<p>
<br />
</p>
<footer>
<p>
Authors: Alberto Defendi, Andrea Esposito, Marco Marinello, Francesco
Mazzini
</p>
<p>&copy 2021 - All right reserved</p>
</footer>
</>
);
import React, { FC } from 'react';
export const TeamPage: FC = () => (
<>
<section>
<h2>These are the students of the MoveAid project</h2>
<div>
<h3>Alberto Defendi</h3>
<table>
<tr>
<td> </td>
<td>
<p>
Age: 19 <br />
Role: Front End Developer
<br />
Hobbys: Sports, maths
<br />
</p>
</td>
</tr>
</table>
</div>
<div>
<h3>Andrea Esposito</h3>
<table>
<tr>
<td> </td>
<td>
<p>
Age: 19 <br />
Role: xxxxx
<br />
Hobbys: xxxxxxxxx
<br />
</p>
</td>
</tr>
</table>
</div>
<div>
<h3>Marco Marinello</h3>
<table>
<tr>
<td> </td>
<td>
<p>
Age: 19 <br />
Role: xxxxx
<br />
Hobbys: xxxxxxxxx
<br />
</p>
</td>
</tr>
</table>
</div>
<div>
<h3>Francesco Mazzini</h3>
<table>
<tr>
<td> </td>
<td>
<p>
<strong>Age:</strong> 19 <br />
<br />
<strong>Role:</strong> Front End Developer
<br />
<br />
<strong>Hobbys:</strong> I like Graphic and Programing.
<br />
I also like playing videogames, hanging out <br />
with friends, watching tv series and <br />
training in gym!
</p>
</td>
</tr>
</table>
</div>
</section>
</>
);
src/components/LandingPage/assets/alberto.png

21.7 KiB

src/components/LandingPage/assets/logo04Circle.png

60.3 KiB

src/components/LandingPage/assets/pp.jpg

28.9 KiB

body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
monospace;
}
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import { IntlProvider } from 'react-intl';
import CssBaseline from '@material-ui/core/CssBaseline';
import MESSAGES_EN from './intl/en.json';
import { App } from './App';
ReactDOM.render(
<React.StrictMode>
<App />
<IntlProvider locale="en" messages={MESSAGES_EN}>
<CssBaseline />
<App />
</IntlProvider>
,
</React.StrictMode>,
document.getElementById('root'),
);
{
"email": "Email address",
"password": "Password",
"email-error": "Insert valid email address",
"password-error": "Insert valid password"
}
\ No newline at end of file
......@@ -1512,7 +1512,7 @@
"@emotion/utils" "0.11.3"
"@emotion/weak-memoize" "0.2.5"
 
"@emotion/core@^10.0.14", "@emotion/core@^10.0.16":
"@emotion/core@^10.0.14", "@emotion/core@^10.0.16", "@emotion/core@^10.0.28":
version "10.1.1"
resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.1.1.tgz#c956c1365f2f2481960064bcb8c4732e5fb612c3"
integrity sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==
......@@ -1576,7 +1576,7 @@
"@emotion/serialize" "^0.11.15"
"@emotion/utils" "0.11.3"
 
"@emotion/styled@^10.0.14":
"@emotion/styled@^10.0.14", "@emotion/styled@^10.0.27":
version "10.0.27"
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-10.0.27.tgz#12cb67e91f7ad7431e1875b1d83a94b814133eaf"
integrity sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==
......@@ -1629,6 +1629,59 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
 
"@formatjs/ecma402-abstract@1.6.4":
version "1.6.4"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.6.4.tgz#cff5ef03837fb6bae70b16d04940213c17e87884"
integrity sha512-ukFjGD9dLsxcD9D5AEshJqQElPQeUAlTALT/lzIV6OcYojyuU81gw/uXDUOrs6XW79jtOJwQDkLqHbCJBJMOTw==
dependencies:
tslib "^2.1.0"
"@formatjs/icu-messageformat-parser@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-1.1.2.tgz#e0d41edcfd031c0627b0f40dfcce5883d765df5d"
integrity sha512-AgwoQ2XUL+bQ/v7t4TBJh9vsob8zXgfM3RNe3MvJBCVOEZ+9z8mszsqeae/DmJgLK6SDezJex5O9Vdiny58Pwg==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
"@formatjs/icu-skeleton-parser" "1.1.1"
tslib "^2.1.0"
"@formatjs/icu-skeleton-parser@1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.1.1.tgz#b2c39a7817816d68d31272947dded970f6d1d1c7"
integrity sha512-hkRJhjr9G0IE730Kxwq65+rz/2fdCckSJTPrKmViMxLNtRmIt6Hx67tffElr9/QSlpzGlXw9XAMdFOa1ylRrJQ==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
tslib "^2.1.0"
"@formatjs/intl-displaynames@4.0.12":
version "4.0.12"
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.12.tgz#9af9992e544aa96b32c3a4994d6fef878e0376c9"
integrity sha512-2f3nf5IcPYk2SCS83rJoV5y47OTL+YtHDa5G42KDgSA8ZgmgkN5OaYs3WF6a2RweMG9jp4LCTUmqS42LcAhJSw==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
tslib "^2.1.0"
"@formatjs/intl-listformat@5.0.13":
version "5.0.13"
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.13.tgz#5b13057a12642089108ddf4316bab976319fd941"
integrity sha512-z4vZ5FX6dsL2fbO7NCmmJXKXH9p0gubzZVSsmCOUBIuy6rODLD8kE2LVnefd4wnXEJi5/fAnwGT2NMjirWa71g==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
tslib "^2.1.0"
"@formatjs/intl@1.9.5":
version "1.9.5"
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.9.5.tgz#02bc32ab9e52b7f0201c964a696609b6d455cca2"
integrity sha512-PEvdDuppTHW23B4s1nzKCY1wku3HYEgmV2ip02RspSUKl8p3t/TCwb1/U3Qwhgj3EUsjYdiaF1uyMj61eChAow==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
"@formatjs/icu-messageformat-parser" "1.1.2"
"@formatjs/intl-displaynames" "4.0.12"
"@formatjs/intl-listformat" "5.0.13"
fast-memoize "^2.5.2"
intl-messageformat "9.6.4"
tslib "^2.1.0"
"@graphql-tools/batch-execute@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b"
......@@ -1805,6 +1858,18 @@
dependencies:
"@hapi/hoek" "^9.0.0"
 
"@hookform/devtools@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@hookform/devtools/-/devtools-2.2.1.tgz#2d88414d375199e193c2611b770b194b7752a623"
integrity sha512-VQh4kqwUOpz9LCDzIP0aJ4qnD/ob8Gp09L8gDy++9XtL66z6g8kbCynUvBrJm4qbCNdH0M7/Spm3AUjJqUuFlA==
dependencies:
"@emotion/core" "^10.0.28"
"@emotion/styled" "^10.0.27"
"@types/lodash" "^4.14.152"
little-state-machine "^3.0.1"
lodash "^4.17.15"
react-simple-animate "^3.3.8"
"@hutson/parse-repository-url@^3.0.0":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340"
......@@ -2662,6 +2727,14 @@
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==
 
"@types/hoist-non-react-statics@^3.3.1":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
dependencies:
"@types/react" "*"
hoist-non-react-statics "^3.3.0"
"@types/html-minifier-terser@^5.0.0":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
......@@ -2731,7 +2804,7 @@
dependencies:
"@types/node" "*"
 
"@types/lodash@^4.14.92":
"@types/lodash@^4.14.152", "@types/lodash@^4.14.92":
version "4.14.168"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
......@@ -7639,7 +7712,7 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
 
fast-memoize@^2.5.1:
fast-memoize@^2.5.1, fast-memoize@^2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e"
integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==
......@@ -9877,6 +9950,15 @@ interpret@^1.0.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
 
intl-messageformat@9.6.4:
version "9.6.4"
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.6.4.tgz#6ee964235c37b864359dc848b3dd5ea984cc8065"
integrity sha512-NCstnz4qiRYHRiFwAadptARV0XGv8dFtC6ZcDfjKlFePvyyQ9zkPXq28Tg7UPTfUZnOfGjnxgi0mMem/5/TbDw==
dependencies:
"@formatjs/icu-messageformat-parser" "1.1.2"
fast-memoize "^2.5.2"
tslib "^2.1.0"
into-stream@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
......@@ -11423,6 +11505,11 @@ listr2@^3.2.2:
through "^2.3.8"
wrap-ansi "^7.0.0"
 
little-state-machine@^3.0.1:
version "3.1.4"
resolved "https://registry.yarnpkg.com/little-state-machine/-/little-state-machine-3.1.4.tgz#b29c396f732976cc327a612ef9a7a53f3f3520ab"
integrity sha512-gYlLCj6oUME0NG34/2O0Ljy52qYYyYDJ5yiAuq2ijbaRlBKIqtQQkKkEYn0KfjYXCE693j+bdY22EyZin25Bhw==
load-cfg@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/load-cfg/-/load-cfg-2.1.0.tgz#230ef6950466df59be934363988d35eee48ce8b9"
......@@ -15135,6 +15222,11 @@ react-helmet-async@^1.0.4:
react-fast-compare "^3.2.0"
shallowequal "^1.1.0"
 
react-hook-form@^6.15.5:
version "6.15.5"
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.15.5.tgz#c2578f9ce6a6df7b33015587d40cd880dc13e2db"
integrity sha512-so2jEPYKdVk1olMo+HQ9D9n1hVzaPPFO4wsjgSeZ964R7q7CHsYRbVF0PGBi83FcycA5482WHflasdwLIUVENg==
react-hot-loader@^4.12.21:
version "4.13.0"
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202"
......@@ -15149,6 +15241,21 @@ react-hot-loader@^4.12.21:
shallowequal "^1.1.0"
source-map "^0.7.3"
 
react-intl@^5.15.5:
version "5.15.5"
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.15.5.tgz#a475445f7e9d9085040d622528ed18a082b03b5d"
integrity sha512-TdjMVU0xkH5hKonv/g5x2sD94iojErqlDMbLADsTmz1dgRDc6iLRP5b7mtp0//pkK/psrb283B8HL1wp1vhpiQ==
dependencies:
"@formatjs/ecma402-abstract" "1.6.4"
"@formatjs/icu-messageformat-parser" "1.1.2"
"@formatjs/intl" "1.9.5"
"@formatjs/intl-displaynames" "4.0.12"
"@formatjs/intl-listformat" "5.0.13"
"@types/hoist-non-react-statics" "^3.3.1"
hoist-non-react-statics "^3.3.2"
intl-messageformat "9.6.4"
tslib "^2.1.0"
react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
......@@ -15288,6 +15395,11 @@ react-scripts@4.0.3:
optionalDependencies:
fsevents "^2.1.3"
 
react-simple-animate@^3.3.8:
version "3.3.11"
resolved "https://registry.yarnpkg.com/react-simple-animate/-/react-simple-animate-3.3.11.tgz#04bb03ffe707e4e7cab4e22a03a93f20415b39de"
integrity sha512-kt2SKJ4Gw3klTmRbik/9R741fPiVRVlxkXvV0c3uu8NqOtdc5ITis62WcdiKH6U5QhCjXNfLW9lrbQ4cAYujyA==
react-simple-code-editor@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373"
......@@ -17820,7 +17932,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.1.0:
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment