restyle Snack

This commit is contained in:
Sidney Alcantara
2021-03-08 12:33:07 +11:00
parent 5d296501d9
commit b32ac673b7
9 changed files with 558 additions and 331 deletions

View File

@@ -8,11 +8,11 @@
},
"private": true,
"dependencies": {
"@antlerengineering/form-builder": "^0.9.7",
"@antlerengineering/multiselect": "^0.8.2",
"@antlerengineering/form-builder": "^0.11.9",
"@antlerengineering/multiselect": "^0.9.0",
"@date-io/date-fns": "1.x",
"@material-ui/core": "^4.11.0",
"@material-ui/icons": "^4.9.1",
"@material-ui/core": "^4.11.3",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.56",
"@material-ui/pickers": "^3.2.10",
"@mdi/js": "^5.8.55",

View File

@@ -4,14 +4,13 @@ import _merge from "lodash/merge";
import { Button } from "@material-ui/core";
import CustomBrowserRouter from "./utils/CustomBrowserRouter";
import PrivateRoute from "./utils/PrivateRoute";
import Snack from "./components/Snack";
import ErrorBoundary from "./components/ErrorBoundary";
import EmptyState from "./components/EmptyState";
import Loading from "./components/Loading";
import CustomBrowserRouter from "utils/CustomBrowserRouter";
import PrivateRoute from "utils/PrivateRoute";
import ErrorBoundary from "components/ErrorBoundary";
import EmptyState from "components/EmptyState";
import Loading from "components/Loading";
import { SnackProvider } from "./utils/SnackProvider";
import { SnackProvider } from "contexts/SnackContext";
import ConfirmationProvider from "components/ConfirmationDialog/Provider";
import { AppProvider } from "contexts/AppContext";
import { FiretableContextProvider } from "contexts/FiretableContext";
@@ -42,90 +41,83 @@ const JwtAuthPage = lazy(
export default function App() {
return (
<>
<ErrorBoundary>
<AppProvider>
<ConfirmationProvider>
<SnackProvider>
<CustomBrowserRouter>
<Suspense fallback={<Loading fullScreen />}>
<Switch>
<Route
exact
path={routes.auth}
render={() => <AuthView />}
/>
<Route
exact
path={routes.impersonatorAuth}
render={() => <ImpersonatorAuthPage />}
/>
<Route
exact
path={routes.jwtAuth}
render={() => <JwtAuthPage />}
/>
<Route
exact
path={routes.signOut}
render={() => <SignOutView />}
/>
<Route exact path={"/test"} render={() => <TestView />} />
<PrivateRoute
exact
path={[
routes.home,
routes.tableWithId,
routes.tableGroupWithId,
routes.gridWithId,
]}
render={() => (
<FiretableContextProvider>
<Switch>
<PrivateRoute
exact
path={routes.home}
render={() => <HomePage />}
/>
<PrivateRoute
path={routes.tableWithId}
render={() => <TablePage />}
/>
<PrivateRoute
path={routes.tableGroupWithId}
render={() => <TablePage />}
/>
</Switch>
</FiretableContextProvider>
)}
/>
<ErrorBoundary>
<AppProvider>
<ConfirmationProvider>
<SnackProvider>
<CustomBrowserRouter>
<Suspense fallback={<Loading fullScreen />}>
<Switch>
<Route exact path={routes.auth} render={() => <AuthView />} />
<Route
exact
path={routes.impersonatorAuth}
render={() => <ImpersonatorAuthPage />}
/>
<Route
exact
path={routes.jwtAuth}
render={() => <JwtAuthPage />}
/>
<Route
exact
path={routes.signOut}
render={() => <SignOutView />}
/>
<Route exact path={"/test"} render={() => <TestView />} />
<PrivateRoute
exact
path={[
routes.home,
routes.tableWithId,
routes.tableGroupWithId,
routes.gridWithId,
]}
render={() => (
<FiretableContextProvider>
<Switch>
<PrivateRoute
exact
path={routes.home}
render={() => <HomePage />}
/>
<PrivateRoute
path={routes.tableWithId}
render={() => <TablePage />}
/>
<PrivateRoute
path={routes.tableGroupWithId}
render={() => <TablePage />}
/>
</Switch>
</FiretableContextProvider>
)}
/>
<PrivateRoute
render={() => (
<EmptyState
message="Page Not Found"
description={
<Button
component={Link}
to={routes.home}
variant="outlined"
style={{ marginTop: 8 }}
>
Go Home
</Button>
}
fullScreen
/>
)}
/>
</Switch>
</Suspense>
<Snack />
</CustomBrowserRouter>
</SnackProvider>
</ConfirmationProvider>
</AppProvider>
</ErrorBoundary>
</>
<PrivateRoute
render={() => (
<EmptyState
message="Page Not Found"
description={
<Button
component={Link}
to={routes.home}
variant="outlined"
style={{ marginTop: 8 }}
>
Go Home
</Button>
}
fullScreen
/>
)}
/>
</Switch>
</Suspense>
</CustomBrowserRouter>
</SnackProvider>
</ConfirmationProvider>
</AppProvider>
</ErrorBoundary>
);
}

View File

@@ -0,0 +1,148 @@
export const antlerPalette = {
aBlack: {
500: "#282829",
},
aWhite: {
500: "#ffffff",
},
aRed: {
100: "#fae4e5",
300: "#fb8c8c",
500: "#ed4747",
600: "#e91c1c",
700: "#c12929",
},
aGray: {
50: "#fafafa",
100: "#f2f2f2",
200: "#e9e9e9",
300: "#cccccc",
500: "#999999",
700: "#595959",
},
gray: {
100: "#f2f2f2",
300: "#cccccc",
500: "#999999",
700: "#595959",
},
blueGray: {
100: "#93a4ad",
300: "#647c8a",
500: "#485a63",
700: "#394c55",
},
indigo: {
100: "#7986cb",
300: "#3f51b5",
500: "#303f9f",
700: "#213092",
},
blue: {
100: "#64b5f6",
300: "#2196f3",
500: "#1976d2",
700: "#0a59a8",
},
lightBlue: {
100: "#4fc3f7",
300: "#03a9f4",
500: "#0b8ed6",
700: "#007fc5",
},
cyan: {
100: "#4dd0e1",
300: "#00bcd4",
500: "#0097a7",
700: "#258493",
},
teal: {
100: "#4db6ac",
300: "#049587",
500: "#037b6d",
700: "#006055",
},
green: {
100: "#81c784",
300: "#4caf50",
500: "#388e3c",
700: "#2e7d32",
},
lightGreen: {
100: "#aed581",
300: "#8bc34a",
500: "#689f38",
700: "#4f6f33",
},
lime: {
100: "#dce775",
300: "#cddc39",
500: "#afb42b",
700: "#8e9d01",
},
yellow: {
100: "#fff176",
300: "#ffeb3b",
500: "#fbc02d",
700: "#d07e04",
},
amber: {
100: "#ffd54f",
300: "#ffc107",
500: "#ffa000",
700: "#b38c2b",
},
orange: {
100: "#ffb74d",
300: "#ff9800",
500: "#f57c00",
700: "#bb661e",
},
brown: {
100: "#a1887f",
300: "#795548",
500: "#5d4037",
700: "#4e3229",
},
tangerine: {
100: "#ff8a65",
300: "#ff5722",
500: "#e64a19",
700: "#c0360a",
},
errorRed: {
100: "#e57373",
300: "#f44336",
500: "#d32f2f",
700: "#c62323",
},
pink: {
100: "#f06292",
300: "#e91e63",
500: "#c2185b",
700: "#b0104f",
},
purple: {
100: "#ba68c8",
300: "#9c27b0",
500: "#7b1fa2",
700: "#650e89",
},
violet: {
100: "#9575cd",
300: "#673ab7",
500: "#512da8",
700: "#341878",
},
} as const;
export const antlerPaletteToMui = (
color: Record<"700" | "300" | "500" | "100", string>
) => ({
main: color[500],
light: color[300],
dark: color[700],
});
export default antlerPalette;

View File

@@ -1,6 +1,8 @@
import React from "react";
import _clone from "lodash/clone";
import _merge from "lodash/merge";
import _omit from "lodash/omit";
import _mapValues from "lodash/mapValues";
import {
createMuiTheme,
@@ -10,6 +12,8 @@ import {
} from "@material-ui/core/styles";
import ClearIcon from "@material-ui/icons/Clear";
import antlerPalette from "./Theme/antlerPalette";
export const HEADING_FONT = "Europa, sans-serif";
export const BODY_FONT = '"Open Sans", sans-serif';
export const MONO_FONT =
@@ -365,6 +369,34 @@ export const defaultOverrides = (theme: Theme): ThemeOptions => ({
MuiListItemIcon: {
root: { minWidth: theme.spacing(40 / 8) },
},
MuiSnackbar: {
root: {
..._omit(theme.typography.overline, ["color"]),
"&& > *": {
..._mapValues(
_omit(theme.typography.overline, ["color"]),
() => "inherit"
),
alignItems: "center",
},
},
},
MuiSnackbarContent: {
root: {
backgroundColor: antlerPalette.aGray[700],
color: theme.palette.common.white,
userSelect: "none",
padding: theme.spacing(0.5, 2),
boxShadow: "none",
},
message: {
padding: theme.spacing(1, 2),
},
},
},
props: {
MuiTypography: {

View File

@@ -1,15 +1,32 @@
import React, { useContext, useEffect } from "react";
import Snackbar from "@material-ui/core/Snackbar";
import { SnackContext } from "contexts/SnackContext";
import MuiAlert, { AlertProps } from "@material-ui/lab/Alert";
import Grid from "@material-ui/core/Grid";
import Card from "@material-ui/core/Card";
import CircularProgress from "@material-ui/core/CircularProgress";
function Alert(props: AlertProps) {
return <MuiAlert elevation={6} variant="filled" {...props} />;
}
import React from "react";
import {
makeStyles,
createStyles,
Snackbar,
CircularProgress,
} from "@material-ui/core";
import Alert from "@material-ui/lab/Alert";
import { useSnackContext } from "contexts/SnackContext";
import antlerPalette from "Theme/antlerPalette";
const useStyles = makeStyles((theme) =>
createStyles({
progressAction: { marginRight: 0 },
progressText: { marginLeft: theme.spacing(2) },
progress: {
color: antlerPalette.green[100],
marginLeft: theme.spacing(2),
},
alertIcon: { padding: 0 },
alertMessage: { padding: theme.spacing(0.75, 2) },
})
);
export default function Snack() {
const snackContext = useContext(SnackContext);
const classes = useStyles();
const {
position,
@@ -20,42 +37,71 @@ export default function Snack() {
action,
variant,
progress,
} = snackContext;
const { vertical, horizontal } = position;
} = useSnackContext();
if (variant === "progress")
return (
<Snackbar
anchorOrigin={position}
open={isOpen}
onClose={close}
message={message}
action={
<>
<span className={classes.progressText}>
{progress.value}
{progress.target && `/${progress.target}`}
</span>
useEffect(() => {
if (isOpen && variant !== "progress") setTimeout(close, duration ?? 1000);
}, [isOpen]);
return (
<Snackbar
anchorOrigin={{ vertical, horizontal }}
key={`${vertical},${horizontal}`}
open={isOpen}
>
{variant === "progress" ? (
<Card>
<Grid container direction="row" justify="space-between">
{message}
{progress.value
? `${progress.value}${
progress.target ? `/${progress.target}` : ""
}`
: ""}
<CircularProgress
variant={progress.value ? "determinate" : "indeterminate"}
variant={progress.value ? "static" : "indeterminate"}
value={
progress.target
? (progress.value / progress.target) * 100
: progress.value
}
size={24}
className={classes.progress}
/>
</Grid>
</Card>
) : (
<Alert onClose={close} action={action} severity={variant}>
{message}
</Alert>
)}
</>
}
ContentProps={{ classes: { action: classes.progressAction } }}
// Stop closing when user clicks
ClickAwayListenerProps={{ mouseEvent: false }}
/>
);
if (!variant)
return (
<Snackbar
anchorOrigin={position}
open={isOpen}
onClose={close}
autoHideDuration={duration}
message={message}
action={action}
ClickAwayListenerProps={{ mouseEvent: false }}
onClick={close}
/>
);
return (
<Snackbar
anchorOrigin={position}
open={isOpen}
onClose={close}
autoHideDuration={duration}
ClickAwayListenerProps={{ mouseEvent: false }}
onClick={close}
>
<Alert
variant="filled"
action={action}
severity={variant}
classes={{ icon: classes.alertIcon, message: classes.alertMessage }}
>
{message}
</Alert>
</Snackbar>
);
}

View File

@@ -1,36 +1,60 @@
import React, { useContext } from "react";
import React, { useContext, useState } from "react";
import { SnackbarOrigin } from "@material-ui/core/Snackbar";
// Default State of our SnackBar
const position: SnackbarOrigin = { vertical: "bottom", horizontal: "left" };
const progress = { value: 0, target: 0 };
export type variantType =
import Snack from "components/Snack";
type Progress = { value: number; target: number };
type Variant =
| "progress"
| "error"
| "success"
| "info"
| "warning"
| undefined;
const variant: variantType = undefined as variantType;
const DEFAULT_STATE = {
isOpen: false, // boolean to control show/hide
message: "", // text to be displayed in SnackBar
duration: 2000, // time SnackBar should be visible
position,
progress,
variant,
close: () => {},
setProgress: (props: { value: number; target: number }) => {},
open: (props: {
message: string;
duration?: number;
position?: SnackbarOrigin;
action?: JSX.Element;
variant?: "progress" | "error" | "success" | "info" | "warning" | undefined;
}) => {},
action: <div />,
};
// Create our Context
export const SnackContext = React.createContext(DEFAULT_STATE);
const DEFAULT_STATE = {
isOpen: false,
duration: 10000,
message: "",
progress: { value: 0, target: 0 } as Progress,
action: null as React.ReactNode,
variant: undefined as Variant,
position: { vertical: "bottom", horizontal: "left" } as SnackbarOrigin,
};
const DEFAULT_FUNCTIONS = {
close: () => {},
setProgress: (progress: Progress) => {},
open: (newState: Partial<typeof DEFAULT_STATE>) => {},
};
export const SnackContext = React.createContext({
...DEFAULT_STATE,
...DEFAULT_FUNCTIONS,
});
export const useSnackContext = () => useContext(SnackContext);
export function SnackProvider({ children }: React.PropsWithChildren<{}>) {
const [state, setState] = useState(DEFAULT_STATE);
const close = () => setState(DEFAULT_STATE);
const open: typeof DEFAULT_FUNCTIONS.open = (newState) =>
setState({ ...DEFAULT_STATE, isOpen: true, ...newState });
const setProgress: typeof DEFAULT_FUNCTIONS.setProgress = (progress) =>
setState((state) => ({ ...state, progress }));
return (
<SnackContext.Provider
value={{
...state,
setProgress,
close,
open,
}}
>
{children}
<Snack />
</SnackContext.Provider>
);
}

View File

@@ -5,13 +5,14 @@ const TestView = () => {
const snackContext = useContext(SnackContext);
useEffect(() => {
// alert("OPEN");
snackContext.open({
variant: "progress",
message: "Preparing files to be downloading",
message: "Preparing files for download",
duration: undefined,
});
snackContext.setProgress({ value: 40, target: 120 });
snackContext.setProgress({ value: 90, target: 120 });
}, []);
return <></>;

View File

@@ -1,74 +0,0 @@
import React, { useEffect, useState } from "react";
import { auth } from "../firebase";
import { SnackbarOrigin } from "@material-ui/core/Snackbar";
import { SnackContext, variantType } from "contexts/SnackContext";
interface ISnackProviderProps {
children: React.ReactNode;
}
export const SnackProvider: React.FC<ISnackProviderProps> = ({ children }) => {
const [isOpen, setIsOpen] = useState(false);
const [message, setMessage] = useState("");
const [duration, setDuration] = useState(3000);
const [progress, setProgress] = useState({ value: 0, target: 0 });
const [action, setAction] = useState(<div />);
const [variant, setvariant] = useState<variantType>("info");
const [position, setPosition] = useState<SnackbarOrigin>({
vertical: "bottom",
horizontal: "left",
});
const close = () => {
setIsOpen(false);
setMessage("");
setDuration(0);
setvariant(undefined);
setAction(<div />);
};
const open = (props: {
message: string;
duration?: number;
position?: SnackbarOrigin;
action?: JSX.Element;
variant?: variantType;
}) => {
const { message, duration, position, action, variant } = props;
setMessage(message);
if (variant) {
setvariant(variant);
}
if (action) {
setAction(action);
}
if (duration) {
setDuration(duration);
} else {
setDuration(3000);
}
if (position) {
setPosition(position);
} else {
setPosition({ vertical: "bottom", horizontal: "left" });
}
setIsOpen(true);
};
return (
<SnackContext.Provider
value={{
isOpen,
message,
duration,
position,
progress,
setProgress,
close,
open,
action,
variant: variant,
}}
>
{children}
</SnackContext.Provider>
);
};

View File

@@ -106,34 +106,35 @@
"@algolia/logger-common" "4.1.0"
"@algolia/requester-common" "4.1.0"
"@antlerengineering/form-builder@^0.9.7":
version "0.9.7"
resolved "https://registry.yarnpkg.com/@antlerengineering/form-builder/-/form-builder-0.9.7.tgz#2ecd3cf7332eb821ada2f86c17a616a6dd7df085"
integrity sha512-bC8+P5fa1/VEytgsJIjjkzjsUFtdUZw6Vy26EfspxkZpTSkg1hCmSfckZGYDIRmsHmZKncegTdubWXKjhmUbag==
"@antlerengineering/form-builder@^0.11.9":
version "0.11.9"
resolved "https://registry.yarnpkg.com/@antlerengineering/form-builder/-/form-builder-0.11.9.tgz#44187c09d79aa08d1f047880b7e649dfe13d0a0f"
integrity sha512-Ojck0ww3vxnzM6tAEc3TUyqijnAsMD16R5qjuqw49BHfjxjpjhfEi1irJmPnEPpMpftlpBgkUqBqZIdY+2/6tg==
dependencies:
"@antlerengineering/multiselect" "^0.8.0"
"@antlerengineering/multiselect" "^0.8.2"
"@date-io/date-fns" "1.x"
"@hookform/resolvers" "^1.1.1"
"@hookform/resolvers" "^1.3.4"
"@material-ui/pickers" "^3.2.10"
"@tinymce/tinymce-react" "^3.8.2"
date-fns "^2.16.1"
lodash "^4.17.20"
lodash-es "^4.17.15"
react-color "^2.19.3"
react-hook-form "^6.12.2"
react-hook-form "^6.15.1"
tinymce "^5.6.1"
use-debounce "^3.4.3"
"@antlerengineering/multiselect@^0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@antlerengineering/multiselect/-/multiselect-0.8.0.tgz#3faec82c8ef3055c01f2c7b37a874b9d079381e8"
integrity sha512-w0Sg23T9Ob2xuAWT2gGc9rtElCMjZUUbB2Jx1zs1Gef81yN7ZM0RB0EwG+rMd/L1i+NI2Kr7MtF2P26llWVDyg==
yup "^0.32.8"
"@antlerengineering/multiselect@^0.8.2":
version "0.8.2"
resolved "https://registry.yarnpkg.com/@antlerengineering/multiselect/-/multiselect-0.8.2.tgz#160294f75a5772aa2ceecdff3dd837520f5b90c8"
integrity sha512-u/J59NkTBMU8voB3RuvVo6OCZLg4mG+gOQQ1vT/hrCw66oPE48+nDmPQEZDhrGwXWSrsqaYNNbt8zjF6sdkYMQ==
"@antlerengineering/multiselect@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@antlerengineering/multiselect/-/multiselect-0.9.0.tgz#8310112e073759482a0c07360f30bdc9b4e6d501"
integrity sha512-0KaUh6M+yn+G51o5qT8IYXYF5t5R0e9j7LUKXvvu606sqCQxj+E2hpqZ6Eruljsa7fQiGRyCOBhecpPwwrgfsw==
"@apidevtools/json-schema-ref-parser@^9.0.3":
version "9.0.6"
resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c"
@@ -1490,6 +1491,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.5":
version "7.13.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.9.tgz#97dbe2116e2630c489f22e0656decd60aaa1fcee"
integrity sha512-aY2kU+xgJ3dJ1eU6FMB9EH8dIe8dmusF1xEku52joLvw6eAFN0AI+WxCLDnpev2LEejWBAy2sBvBOBAjI3zmvA==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.11.0":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
@@ -1950,10 +1958,10 @@
dependencies:
"@hapi/hoek" "^8.3.0"
"@hookform/resolvers@^1.1.1":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-1.3.2.tgz#9d747784c6d647da22bcf43d0be17f470d412182"
integrity sha512-OumtsPsGqBcsMXGUkM7IGDO55+ZmruF3u3D7eDYDK4HpYQcp4Q5QeqQtQr/BLD1wgTiB4YLvcboRXrITuJOwdA==
"@hookform/resolvers@^1.3.4":
version "1.3.5"
resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-1.3.5.tgz#554a4b1d5a3ff89551419b1eb963302f8021d0c9"
integrity sha512-R+bX8y2uk9buIhFrngmRRQMtpGjqZNDnCbANIbV1kIgAu5D6o+frFKCrewmicYKB2kowGyRJEx50Mu/nUdAeaA==
"@icons/material@^0.2.4":
version "0.2.4"
@@ -2113,28 +2121,28 @@
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
"@material-ui/core@^4.11.0":
version "4.11.0"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.0.tgz#b69b26e4553c9e53f2bfaf1053e216a0af9be15a"
integrity sha512-bYo9uIub8wGhZySHqLQ833zi4ZML+XCBE1XwJ8EuUVSpTWWG57Pm+YugQToJNFsEyiKFhPh8DPD0bgupz8n01g==
"@material-ui/core@^4.11.3":
version "4.11.3"
resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.11.3.tgz#f22e41775b0bd075e36a7a093d43951bf7f63850"
integrity sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/styles" "^4.10.0"
"@material-ui/system" "^4.9.14"
"@material-ui/styles" "^4.11.3"
"@material-ui/system" "^4.11.3"
"@material-ui/types" "^5.1.0"
"@material-ui/utils" "^4.10.2"
"@material-ui/utils" "^4.11.2"
"@types/react-transition-group" "^4.2.0"
clsx "^1.0.4"
hoist-non-react-statics "^3.3.2"
popper.js "1.16.1-lts"
prop-types "^15.7.2"
react-is "^16.8.0"
react-is "^16.8.0 || ^17.0.0"
react-transition-group "^4.4.0"
"@material-ui/icons@^4.9.1":
version "4.9.1"
resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.9.1.tgz#fdeadf8cb3d89208945b33dbc50c7c616d0bd665"
integrity sha512-GBitL3oBWO0hzBhvA9KxqcowRUsA0qzwKkURyC8nppnC3fw54KPKZ+d4V1Eeg/UnDRSzDaI9nGCdel/eh9AQMg==
"@material-ui/icons@^4.11.2":
version "4.11.2"
resolved "https://registry.yarnpkg.com/@material-ui/icons/-/icons-4.11.2.tgz#b3a7353266519cd743b6461ae9fdfcb1b25eb4c5"
integrity sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==
dependencies:
"@babel/runtime" "^7.4.4"
@@ -2161,35 +2169,35 @@
react-transition-group "^4.0.0"
rifm "^0.7.0"
"@material-ui/styles@^4.10.0":
version "4.10.0"
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.10.0.tgz#2406dc23aa358217aa8cc772e6237bd7f0544071"
integrity sha512-XPwiVTpd3rlnbfrgtEJ1eJJdFCXZkHxy8TrdieaTvwxNYj42VnnCyFzxYeNW9Lhj4V1oD8YtQ6S5Gie7bZDf7Q==
"@material-ui/styles@^4.11.3":
version "4.11.3"
resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.11.3.tgz#1b8d97775a4a643b53478c895e3f2a464e8916f2"
integrity sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==
dependencies:
"@babel/runtime" "^7.4.4"
"@emotion/hash" "^0.8.0"
"@material-ui/types" "^5.1.0"
"@material-ui/utils" "^4.9.6"
"@material-ui/utils" "^4.11.2"
clsx "^1.0.4"
csstype "^2.5.2"
hoist-non-react-statics "^3.3.2"
jss "^10.0.3"
jss-plugin-camel-case "^10.0.3"
jss-plugin-default-unit "^10.0.3"
jss-plugin-global "^10.0.3"
jss-plugin-nested "^10.0.3"
jss-plugin-props-sort "^10.0.3"
jss-plugin-rule-value-function "^10.0.3"
jss-plugin-vendor-prefixer "^10.0.3"
jss "^10.5.1"
jss-plugin-camel-case "^10.5.1"
jss-plugin-default-unit "^10.5.1"
jss-plugin-global "^10.5.1"
jss-plugin-nested "^10.5.1"
jss-plugin-props-sort "^10.5.1"
jss-plugin-rule-value-function "^10.5.1"
jss-plugin-vendor-prefixer "^10.5.1"
prop-types "^15.7.2"
"@material-ui/system@^4.9.14":
version "4.9.14"
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.9.14.tgz#4b00c48b569340cefb2036d0596b93ac6c587a5f"
integrity sha512-oQbaqfSnNlEkXEziDcJDDIy8pbvwUmZXWNqlmIwDqr/ZdCK8FuV3f4nxikUh7hvClKV2gnQ9djh5CZFTHkZj3w==
"@material-ui/system@^4.11.3":
version "4.11.3"
resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.11.3.tgz#466bc14c9986798fd325665927c963eb47cc4143"
integrity sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==
dependencies:
"@babel/runtime" "^7.4.4"
"@material-ui/utils" "^4.9.6"
"@material-ui/utils" "^4.11.2"
csstype "^2.5.2"
prop-types "^15.7.2"
@@ -2198,7 +2206,7 @@
resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-5.1.0.tgz#efa1c7a0b0eaa4c7c87ac0390445f0f88b0d88f2"
integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==
"@material-ui/utils@^4.10.2", "@material-ui/utils@^4.9.6":
"@material-ui/utils@^4.10.2":
version "4.10.2"
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.10.2.tgz#3fd5470ca61b7341f1e0468ac8f29a70bf6df321"
integrity sha512-eg29v74P7W5r6a4tWWDAAfZldXIzfyO1am2fIsC39hdUUHm/33k6pGOKPbgDjg/U/4ifmgAePy/1OjkKN6rFRw==
@@ -2207,6 +2215,15 @@
prop-types "^15.7.2"
react-is "^16.8.0"
"@material-ui/utils@^4.11.2":
version "4.11.2"
resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.11.2.tgz#f1aefa7e7dff2ebcb97d31de51aecab1bb57540a"
integrity sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==
dependencies:
"@babel/runtime" "^7.4.4"
prop-types "^15.7.2"
react-is "^16.8.0 || ^17.0.0"
"@mdi/js@^5.8.55":
version "5.8.55"
resolved "https://registry.yarnpkg.com/@mdi/js/-/js-5.8.55.tgz#630bc5fafd8b1d2f6e63489a9ab170177559e41b"
@@ -2566,6 +2583,11 @@
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==
"@types/lodash@^4.14.165":
version "4.14.168"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
"@types/long@^4.0.0", "@types/long@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9"
@@ -5231,11 +5253,16 @@ cssstyle@^1.0.0, cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7:
csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.7:
version "2.6.11"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5"
integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw==
csstype@^3.0.2:
version "3.0.7"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b"
integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==
csv-parse@^4.4.6:
version "4.8.8"
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.8.8.tgz#0acbc4598c1f28652c4250599108096b3a0a68ae"
@@ -7854,6 +7881,13 @@ imurmurhash@^0.1.4:
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
indefinite-observable@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400"
integrity sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==
dependencies:
symbol-observable "1.2.0"
indent-string@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
@@ -9131,73 +9165,74 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
jss-plugin-camel-case@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.3.0.tgz#ae4da53b39a6e3ea94b70a20fc41c11f0b87386a"
integrity sha512-tadWRi/SLWqLK3EUZEdDNJL71F3ST93Zrl9JYMjV0QDqKPAl0Liue81q7m/nFUpnSTXczbKDy4wq8rI8o7WFqA==
jss-plugin-camel-case@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz#427b24a9951b4c2eaa7e3d5267acd2e00b0934f9"
integrity sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg==
dependencies:
"@babel/runtime" "^7.3.1"
hyphenate-style-name "^1.0.3"
jss "^10.3.0"
jss "10.5.1"
jss-plugin-default-unit@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.3.0.tgz#cd74cf5088542620a82591f76c62c6b43a7e50a6"
integrity sha512-tT5KkIXAsZOSS9WDSe8m8lEHIjoEOj4Pr0WrG0WZZsMXZ1mVLFCSsD2jdWarQWDaRNyMj/I4d7czRRObhOxSuw==
jss-plugin-default-unit@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz#2be385d71d50aee2ee81c2a9ac70e00592ed861b"
integrity sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "^10.3.0"
jss "10.5.1"
jss-plugin-global@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.3.0.tgz#6b883e74900bb71f65ac2b19bea78f7d1e85af3f"
integrity sha512-etYTG/y3qIR/vxZnKY+J3wXwObyBDNhBiB3l/EW9/pE3WHE//BZdK8LFvQcrCO48sZW1Z6paHo6klxUPP7WbzA==
jss-plugin-global@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz#0e1793dea86c298360a7e2004721351653c7e764"
integrity sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "^10.3.0"
jss "10.5.1"
jss-plugin-nested@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.3.0.tgz#ae8aceac95e09c3d40c991ea32403fb647d9e0a8"
integrity sha512-qWiEkoXNEkkZ+FZrWmUGpf+zBsnEOmKXhkjNX85/ZfWhH9dfGxUCKuJFuOWFM+rjQfxV4csfesq4hY0jk8Qt0w==
jss-plugin-nested@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz#8753a80ad31190fb6ac6fdd39f57352dcf1295bb"
integrity sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "^10.3.0"
jss "10.5.1"
tiny-warning "^1.0.2"
jss-plugin-props-sort@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.3.0.tgz#5b0625f87b6431a7969c56b0d8c696525969bfe4"
integrity sha512-boetORqL/lfd7BWeFD3K+IyPqyIC+l3CRrdZr+NPq7Noqp+xyg/0MR7QisgzpxCEulk+j2CRcEUoZsvgPC4nTg==
jss-plugin-props-sort@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz#ab1c167fd2d4506fb6a1c1d66c5f3ef545ff1cd8"
integrity sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g==
dependencies:
"@babel/runtime" "^7.3.1"
jss "^10.3.0"
jss "10.5.1"
jss-plugin-rule-value-function@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.3.0.tgz#498b0e2bae16cb316a6bdb73fd783cf9604ba747"
integrity sha512-7WiMrKIHH3rwxTuJki9+7nY11r1UXqaUZRhHvqTD4/ZE+SVhvtD5Tx21ivNxotwUSleucA/8boX+NF21oXzr5Q==
jss-plugin-rule-value-function@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz#37f4030523fb3032c8801fab48c36c373004de7e"
integrity sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ==
dependencies:
"@babel/runtime" "^7.3.1"
jss "^10.3.0"
jss "10.5.1"
tiny-warning "^1.0.2"
jss-plugin-vendor-prefixer@^10.0.3:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.3.0.tgz#b09c13a4d05a055429d8a24e19cc01ce049f0ed4"
integrity sha512-sZQbrcZyP5V0ADjCLwUA1spVWoaZvM7XZ+2fSeieZFBj31cRsnV7X70FFDerMHeiHAXKWzYek+67nMDjhrZAVQ==
jss-plugin-vendor-prefixer@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz#45a183a3a0eb097bdfab0986b858d99920c0bbd8"
integrity sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ==
dependencies:
"@babel/runtime" "^7.3.1"
css-vendor "^2.0.8"
jss "^10.3.0"
jss "10.5.1"
jss@^10.0.3, jss@^10.3.0:
version "10.3.0"
resolved "https://registry.yarnpkg.com/jss/-/jss-10.3.0.tgz#2cf7be265f72b59c1764d816fdabff1c5dd18326"
integrity sha512-B5sTRW9B6uHaUVzSo9YiMEOEp3UX8lWevU0Fsv+xtRnsShmgCfIYX44bTH8bPJe6LQKqEXku3ulKuHLbxBS97Q==
jss@10.5.1, jss@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/jss/-/jss-10.5.1.tgz#93e6b2428c840408372d8b548c3f3c60fa601c40"
integrity sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg==
dependencies:
"@babel/runtime" "^7.3.1"
csstype "^2.6.5"
csstype "^3.0.2"
indefinite-observable "^2.0.1"
is-in-browser "^1.1.3"
tiny-warning "^1.0.2"
@@ -10226,6 +10261,11 @@ nan@^2.14.1:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
nanoclone@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
nanomatch@^1.2.9:
version "1.2.13"
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
@@ -12049,6 +12089,11 @@ property-expr@^1.5.0:
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
property-expr@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910"
integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg==
protobufjs@^6.8.1, protobufjs@^6.8.6, protobufjs@^6.8.8, protobufjs@^6.8.9:
version "6.8.9"
resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.9.tgz#0b1adbcdaa983d369c3d9108a97c814edc030754"
@@ -12467,12 +12512,7 @@ react-floater@^0.7.2:
react-proptype-conditional-require "^1.0.4"
tree-changes "^0.5.1"
react-hook-form@^6.12.2:
version "6.14.2"
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.14.2.tgz#60ab0b5367b220a3d96aa0b17bd0f13f9d8c326a"
integrity sha512-GgDUuT3Yfhl1BOcMl862uAFbCixSomtm3CVlQQ1qVu9Tq5BN2uUIRUIXP8l2Gy99eLUrBqU9x4E7N+si9cnvaw==
react-hook-form@^6.15.4:
react-hook-form@^6.15.1, react-hook-form@^6.15.4:
version "6.15.4"
resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-6.15.4.tgz#328003e1ccc096cd158899ffe7e3b33735a9b024"
integrity sha512-K+Sw33DtTMengs8OdqFJI3glzNl1wBzSefD/ksQw/hJf9CnOHQAU6qy82eOrh0IRNt2G53sjr7qnnw1JDjvx1w==
@@ -12492,6 +12532,11 @@ react-is@^16.6.0, react-is@^16.8.4:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527"
integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==
"react-is@^16.8.0 || ^17.0.0":
version "17.0.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339"
integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==
react-joyride@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/react-joyride/-/react-joyride-2.3.0.tgz#d18f7af8f6e7d4c7409426d43e5f6513d70b3e00"
@@ -14163,7 +14208,7 @@ svgo@^1.0.0, svgo@^1.2.2:
unquote "~1.1.1"
util.promisify "~1.0.0"
symbol-observable@^1.2.0:
symbol-observable@1.2.0, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
@@ -15627,6 +15672,19 @@ yup@^0.27.0:
synchronous-promise "^2.0.6"
toposort "^2.0.2"
yup@^0.32.8:
version "0.32.9"
resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.9.tgz#9367bec6b1b0e39211ecbca598702e106019d872"
integrity sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==
dependencies:
"@babel/runtime" "^7.10.5"
"@types/lodash" "^4.14.165"
lodash "^4.17.20"
lodash-es "^4.17.15"
nanoclone "^0.2.1"
property-expr "^2.0.4"
toposort "^2.0.2"
zip-stream@^2.1.2:
version "2.1.3"
resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b"