2023-01-16 09:45:12 +00:00
|
|
|
import BackButton from "@dashboard/components/BackButton";
|
2023-05-30 07:42:22 +00:00
|
|
|
import {
|
|
|
|
ConfirmButton,
|
|
|
|
ConfirmButtonTransitionState,
|
|
|
|
} from "@dashboard/components/ConfirmButton";
|
2023-01-16 09:45:12 +00:00
|
|
|
import Form from "@dashboard/components/Form";
|
|
|
|
import { MenuErrorFragment } from "@dashboard/graphql";
|
|
|
|
import { buttonMessages } from "@dashboard/intl";
|
|
|
|
import { getFormErrors } from "@dashboard/utils/errors";
|
|
|
|
import getMenuErrorMessage from "@dashboard/utils/errors/menu";
|
2021-05-14 08:15:15 +00:00
|
|
|
import {
|
|
|
|
Dialog,
|
|
|
|
DialogActions,
|
|
|
|
DialogContent,
|
|
|
|
DialogTitle,
|
2022-06-21 09:36:55 +00:00
|
|
|
TextField,
|
2021-05-14 08:15:15 +00:00
|
|
|
} from "@material-ui/core";
|
2020-05-14 09:30:32 +00:00
|
|
|
import React from "react";
|
|
|
|
import { FormattedMessage, useIntl } from "react-intl";
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
export interface MenuCreateDialogFormData {
|
|
|
|
name: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface MenuCreateDialogProps {
|
|
|
|
confirmButtonState: ConfirmButtonTransitionState;
|
|
|
|
disabled: boolean;
|
2020-03-11 13:03:31 +00:00
|
|
|
errors: MenuErrorFragment[];
|
2019-06-19 14:40:52 +00:00
|
|
|
open: boolean;
|
|
|
|
onClose: () => void;
|
|
|
|
onConfirm: (data: MenuCreateDialogFormData) => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
const initialForm: MenuCreateDialogFormData = {
|
2022-06-21 09:36:55 +00:00
|
|
|
name: "",
|
2019-06-19 14:40:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
const MenuCreateDialog: React.FC<MenuCreateDialogProps> = ({
|
|
|
|
confirmButtonState,
|
|
|
|
disabled,
|
2020-02-24 14:14:48 +00:00
|
|
|
errors,
|
2019-06-19 14:40:52 +00:00
|
|
|
onClose,
|
|
|
|
onConfirm,
|
2022-06-21 09:36:55 +00:00
|
|
|
open,
|
2019-08-26 14:51:47 +00:00
|
|
|
}) => {
|
|
|
|
const intl = useIntl();
|
|
|
|
|
2020-03-11 13:03:31 +00:00
|
|
|
const formErrors = getFormErrors(["name"], errors);
|
|
|
|
|
2019-08-26 14:51:47 +00:00
|
|
|
return (
|
|
|
|
<Dialog onClose={onClose} maxWidth="sm" fullWidth open={open}>
|
2023-02-20 15:21:28 +00:00
|
|
|
<DialogTitle disableTypography>
|
2019-08-26 14:51:47 +00:00
|
|
|
<FormattedMessage
|
2022-05-05 07:54:28 +00:00
|
|
|
id="0OtaXa"
|
2019-09-05 13:33:50 +00:00
|
|
|
defaultMessage="Create Menu"
|
2019-08-26 14:51:47 +00:00
|
|
|
description="dialog header"
|
|
|
|
/>
|
|
|
|
</DialogTitle>
|
|
|
|
<Form initial={initialForm} onSubmit={onConfirm}>
|
2020-02-24 14:14:48 +00:00
|
|
|
{({ change, data, submit }) => (
|
2019-08-26 14:51:47 +00:00
|
|
|
<>
|
|
|
|
<DialogContent>
|
|
|
|
<TextField
|
|
|
|
disabled={disabled}
|
2020-03-11 13:03:31 +00:00
|
|
|
error={!!formErrors.name}
|
2019-08-26 14:51:47 +00:00
|
|
|
fullWidth
|
2020-03-11 13:03:31 +00:00
|
|
|
helperText={getMenuErrorMessage(formErrors.name, intl)}
|
2019-08-26 14:51:47 +00:00
|
|
|
label={intl.formatMessage({
|
2022-05-05 07:54:28 +00:00
|
|
|
id: "jhh/D6",
|
2022-06-21 09:36:55 +00:00
|
|
|
defaultMessage: "Menu Title",
|
2019-08-26 14:51:47 +00:00
|
|
|
})}
|
|
|
|
name={"name" as keyof MenuCreateDialogFormData}
|
|
|
|
value={data.name}
|
|
|
|
onChange={change}
|
|
|
|
/>
|
|
|
|
</DialogContent>
|
|
|
|
<DialogActions>
|
2022-01-28 12:34:20 +00:00
|
|
|
<BackButton onClick={onClose} />
|
2019-08-26 14:51:47 +00:00
|
|
|
<ConfirmButton
|
|
|
|
transitionState={confirmButtonState}
|
|
|
|
onClick={submit}
|
2022-02-11 11:28:55 +00:00
|
|
|
data-test-id="submit"
|
2019-08-26 14:51:47 +00:00
|
|
|
>
|
|
|
|
<FormattedMessage {...buttonMessages.save} />
|
|
|
|
</ConfirmButton>
|
|
|
|
</DialogActions>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</Form>
|
|
|
|
</Dialog>
|
|
|
|
);
|
|
|
|
};
|
2019-06-19 14:40:52 +00:00
|
|
|
|
|
|
|
MenuCreateDialog.displayName = "MenuCreateDialog";
|
|
|
|
export default MenuCreateDialog;
|