import DialogContentText from "@material-ui/core/DialogContentText"; import React from "react"; import { FormattedMessage, IntlShape, useIntl } from "react-intl"; import ActionDialog from "@saleor/components/ActionDialog"; import { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; export type OrderDraftFinalizeWarning = | "no-shipping" | "no-billing" | "no-user" | "no-shipping-method" | "unnecessary-shipping-method"; export interface OrderDraftFinalizeDialogProps { confirmButtonState: ConfirmButtonTransitionState; open: boolean; orderNumber: string; warnings: OrderDraftFinalizeWarning[]; onClose: () => void; onConfirm: () => void; } const warningToText = (warning: OrderDraftFinalizeWarning, intl: IntlShape) => { switch (warning) { case "no-shipping": return intl.formatMessage({ defaultMessage: "No shipping address" }); case "no-billing": return intl.formatMessage({ defaultMessage: "No billing address" }); case "no-user": return intl.formatMessage({ defaultMessage: "No user information" }); case "no-shipping-method": return intl.formatMessage({ defaultMessage: "Some products require shipping, but no method provided" }); case "unnecessary-shipping-method": return intl.formatMessage({ defaultMessage: "Shipping method provided, but no product requires it" }); } }; const OrderDraftFinalizeDialog: React.StatelessComponent< OrderDraftFinalizeDialogProps > = ({ confirmButtonState, open, warnings, onClose, onConfirm, orderNumber }) => { const intl = useIntl(); return ( 0 ? intl.formatMessage({ defaultMessage: "Finalize anyway", description: "button" }) : intl.formatMessage({ defaultMessage: "Finalize", description: "button" }) } confirmButtonState={confirmButtonState} variant={warnings.length > 0 ? "delete" : "default"} > {warnings.length > 0 && ( <>

)}
); }; OrderDraftFinalizeDialog.displayName = "OrderDraftFinalize"; export default OrderDraftFinalizeDialog;