saleor-dashboard/src/orders/components/OrderDraftDetails/OrderDraftDetails.tsx

69 lines
2 KiB
TypeScript
Raw Normal View History

2019-06-19 14:40:52 +00:00
import Button from "@material-ui/core/Button";
import Card from "@material-ui/core/Card";
import CardContent from "@material-ui/core/CardContent";
2019-08-09 10:26:22 +00:00
import React from "react";
import { FormattedMessage, useIntl } from "react-intl";
2019-06-19 14:40:52 +00:00
import CardTitle from "@saleor/components/CardTitle";
import { maybe } from "../../../misc";
import { OrderDetails_order } from "../../types/OrderDetails";
import OrderDraftDetailsProducts, {
FormData as OrderDraftDetailsProductsFormData
} from "../OrderDraftDetailsProducts";
import OrderDraftDetailsSummary from "../OrderDraftDetailsSummary/OrderDraftDetailsSummary";
interface OrderDraftDetailsProps {
order: OrderDetails_order;
onOrderLineAdd: () => void;
onOrderLineChange: (
id: string,
data: OrderDraftDetailsProductsFormData
) => void;
onOrderLineRemove: (id: string) => void;
onShippingMethodEdit: () => void;
}
const OrderDraftDetails: React.FC<OrderDraftDetailsProps> = ({
2019-06-19 14:40:52 +00:00
order,
onOrderLineAdd,
onOrderLineChange,
onOrderLineRemove,
onShippingMethodEdit
}) => {
const intl = useIntl();
return (
<Card>
<CardTitle
title={intl.formatMessage({
defaultMessage: "Order Details",
description: "section header"
})}
toolbar={
<Button color="primary" variant="text" onClick={onOrderLineAdd}>
<FormattedMessage
defaultMessage="Add products"
description="button"
/>
</Button>
}
/>
<OrderDraftDetailsProducts
lines={maybe(() => order.lines)}
onOrderLineChange={onOrderLineChange}
onOrderLineRemove={onOrderLineRemove}
/>
{maybe(() => order.lines.length) !== 0 && (
<CardContent>
<OrderDraftDetailsSummary
order={order}
onShippingMethodEdit={onShippingMethodEdit}
/>
</CardContent>
)}
</Card>
);
};
2019-06-19 14:40:52 +00:00
OrderDraftDetails.displayName = "OrderDraftDetails";
export default OrderDraftDetails;