import Button from "@material-ui/core/Button"; import Card from "@material-ui/core/Card"; 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 DeleteIcon from "@material-ui/icons/Delete"; import EditIcon from "@material-ui/icons/Edit"; import React from "react"; import CardTitle from "@saleor/components/CardTitle"; import IconButtonTableCell from "@saleor/components/IconButtonTableCell"; import Money from "@saleor/components/Money"; import MoneyRange from "@saleor/components/MoneyRange"; import Skeleton from "@saleor/components/Skeleton"; import WeightRange from "@saleor/components/WeightRange"; import i18n from "../../../i18n"; import { maybe, renderCollection } from "../../../misc"; import { ICONBUTTON_SIZE } from "../../../theme"; import { ShippingZoneDetailsFragment_shippingMethods } from "../../types/ShippingZoneDetailsFragment"; export interface ShippingZoneRatesProps { disabled: boolean; rates: ShippingZoneDetailsFragment_shippingMethods[]; variant: "price" | "weight"; onRateAdd: () => void; onRateEdit: (id: string) => void; onRateRemove: (id: string) => void; } const styles = (theme: Theme) => createStyles({ alignRight: { "&:last-child": { paddingRight: 0 }, paddingRight: 0, width: ICONBUTTON_SIZE + theme.spacing.unit / 2 }, nameColumn: { width: 300 }, valueColumn: { width: 300 } }); const ShippingZoneRates = withStyles(styles, { name: "ShippingZoneRates" })( ({ classes, disabled, onRateAdd, onRateEdit, onRateRemove, rates, variant }: ShippingZoneRatesProps & WithStyles) => ( {i18n.t("Add rate", { context: "button" })} } /> {i18n.t("Name", { context: "object" })} {variant === "price" ? i18n.t("Value Range", { context: "object" }) : i18n.t("Weight Range", { context: "object" })} {i18n.t("Price", { context: "object" })} {renderCollection( rates, rate => ( onRateEdit(rate.id) : undefined} > {maybe(() => rate.name, )} {maybe( () => variant === "price" ? ( ) : ( ), )} {maybe( () => ( ), )} onRateEdit(rate.id)} > onRateRemove(rate.id)} > ), () => ( {i18n.t("No shipping rates found")} ) )}
) ); ShippingZoneRates.displayName = "ShippingZoneRates"; export default ShippingZoneRates;