import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from "@material-ui/core"; import ConfirmButton, { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import Form from "@saleor/components/Form"; import FormSpacer from "@saleor/components/FormSpacer"; import Money from "@saleor/components/Money"; import { SingleSelectField } from "@saleor/components/SingleSelectField"; import { OrderErrorFragment } from "@saleor/fragments/types/OrderErrorFragment"; import useModalDialogErrors from "@saleor/hooks/useModalDialogErrors"; import { buttonMessages } from "@saleor/intl"; import { makeStyles } from "@saleor/macaw-ui"; import { getFormErrors } from "@saleor/utils/errors"; import getOrderErrorMessage from "@saleor/utils/errors/order"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { OrderDetails_order_availableShippingMethods } from "../../types/OrderDetails"; export interface FormData { shippingMethod: string; } const useStyles = makeStyles( theme => ({ dialog: { overflowY: "visible" }, menuItem: { display: "flex", width: "100%" }, price: { marginRight: theme.spacing(3) }, root: { overflowY: "visible", width: theme.breakpoints.values.sm, margin: 0, padding: theme.spacing(3) }, shippingMethodName: { flex: 1, overflowX: "hidden", textOverflow: "ellipsis" } }), { name: "OrderShippingMethodEditDialog" } ); export interface OrderShippingMethodEditDialogProps { confirmButtonState: ConfirmButtonTransitionState; errors: OrderErrorFragment[]; open: boolean; shippingMethod: string; shippingMethods?: OrderDetails_order_availableShippingMethods[]; onClose(); onSubmit?(data: FormData); } const OrderShippingMethodEditDialog: React.FC = props => { const { confirmButtonState, errors: apiErrors, open, shippingMethod, shippingMethods, onClose, onSubmit } = props; const classes = useStyles(props); const errors = useModalDialogErrors(apiErrors, open); const intl = useIntl(); const formFields = ["shippingMethod"]; const formErrors = getFormErrors(formFields, errors); const nonFieldErrors = errors.filter(err => !formFields.includes(err.field)); const choices = shippingMethods ? shippingMethods.map(s => ({ label: (
{s.name}  
), value: s.id })) : []; const initialForm: FormData = { shippingMethod }; return (
{({ change, data }) => ( <> {nonFieldErrors.length > 0 && ( <> {nonFieldErrors.map((err, index) => ( {getOrderErrorMessage(err, intl)} ))} )} )}
); }; OrderShippingMethodEditDialog.displayName = "OrderShippingMethodEditDialog"; export default OrderShippingMethodEditDialog;