import Button from "@material-ui/core/Button"; import Dialog from "@material-ui/core/Dialog"; import DialogActions from "@material-ui/core/DialogActions"; import DialogContent from "@material-ui/core/DialogContent"; import DialogTitle from "@material-ui/core/DialogTitle"; import { createStyles, Theme, withStyles, WithStyles } from "@material-ui/core/styles"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; import TextField from "@material-ui/core/TextField"; import React from "react"; import ConfirmButton, { ConfirmButtonTransitionState } from "@saleor/components/ConfirmButton"; import Form from "@saleor/components/Form"; import { FormSpacer } from "@saleor/components/FormSpacer"; import TableCellAvatar from "@saleor/components/TableCellAvatar"; import i18n from "../../../i18n"; import { maybe } from "../../../misc"; import { OrderDetails_order_lines } from "../../types/OrderDetails"; export interface FormData { lines: number[]; trackingNumber: string; } const styles = (theme: Theme) => createStyles({ avatarCell: { paddingLeft: theme.spacing.unit * 2, paddingRight: theme.spacing.unit * 3, width: theme.spacing.unit * 5 }, quantityInput: { width: "4rem" }, quantityInputContainer: { paddingRight: theme.spacing.unit, textAlign: "right" as "right" }, remainingQuantity: { paddingBottom: 4 }, textRight: { textAlign: "right" as "right" } }); export interface OrderFulfillmentDialogProps extends WithStyles { confirmButtonState: ConfirmButtonTransitionState; open: boolean; lines: OrderDetails_order_lines[]; onClose(); onSubmit(data: FormData); } const OrderFulfillmentDialog = withStyles(styles, { name: "OrderFulfillmentDialog" })( ({ classes, confirmButtonState, open, lines, onClose, onSubmit }: OrderFulfillmentDialogProps) => (
lines.map( product => product.quantity - product.quantityFulfilled ), [] ), trackingNumber: "" }} onSubmit={onSubmit} > {({ data, change }) => { const handleQuantityChange = ( productIndex: number, event: React.ChangeEvent ) => { const newData = data.lines; newData[productIndex] = event.target.value; change({ target: { name: "lines", value: newData } } as any); }; return ( <> {i18n.t("Fulfill products")} {i18n.t("Product name")} {i18n.t("SKU")} {i18n.t("Quantity")} {lines.map((product, productIndex) => { const remainingQuantity = product.quantity - product.quantityFulfilled; return ( product.thumbnail.url)} /> {product.productName} {product.productSku} handleQuantityChange(productIndex, event) } error={remainingQuantity < data.lines[productIndex]} />
/ {remainingQuantity}
); })}
{i18n.t("Confirm", { context: "button" })} ); }}
) ); OrderFulfillmentDialog.displayName = "OrderFulfillmentDialog"; export default OrderFulfillmentDialog;