UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

53 lines 2.65 kB
import React from "react"; import LoadingButton from "@mui/lab/LoadingButton"; import Box from "@mui/material/Box"; import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import { useSnackbar } from "notistack"; import { useApi } from "../contexts/ApiContext"; import { useI18n } from "../contexts/I18nContext"; import { useUser } from "../contexts/UserContext"; import { title } from "../util"; const LoginForm = () => { const { enqueueSnackbar } = useSnackbar(); const { t } = useI18n(); const { login } = useUser(); const api = useApi(); const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); const [loading, setLoading] = React.useState(false); const operation = api.operations["bananas.login:create"]; const { properties } = operation.request.body.schema; const handleSubmit = (event) => { event.preventDefault(); setLoading(true); login(username, password) .then((user) => { if (user != null) { enqueueSnackbar(`${t("Welcome,")} ${user.full_name}`, { variant: "success", }); } else { enqueueSnackbar(t("Unable to log in with provided credentials."), { variant: "error", }); } }) .finally(() => setLoading(false)); }; return (React.createElement(Box, { component: "form", onSubmit: handleSubmit }, React.createElement(DialogContent, null, React.createElement(Stack, { spacing: 1 }, React.createElement(TextField, { fullWidth: true, color: "secondary", inputProps: { "aria-label": "Username" }, label: title(t(properties.username.title.toLowerCase())), name: "username", type: "text", onChange: (e) => setUsername(e.target.value) }), React.createElement(TextField, { fullWidth: true, color: "secondary", inputProps: { "aria-label": "Password" }, label: t(properties.password.title), name: "password", type: "password", onChange: (e) => setPassword(e.target.value) }))), React.createElement(DialogActions, { sx: { pt: 0, pb: 2, } }, React.createElement(LoadingButton, { "aria-label": "login", color: "primary", loading: loading, sx: { margin: "auto" }, type: "submit", variant: "contained" }, t("Log in"))))); }; export default LoginForm; //# sourceMappingURL=LoginForm.js.map