import { Card, TableBody, TableCell, TableHead, TableRow, } from "@material-ui/core"; import EditIcon from "@material-ui/icons/Edit"; 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 ResponsiveTable from "@saleor/components/ResponsiveTable"; import Skeleton from "@saleor/components/Skeleton"; import { TableButtonWrapper } from "@saleor/components/TableButtonWrapper/TableButtonWrapper"; import TableRowLink from "@saleor/components/TableRowLink"; import WeightRange from "@saleor/components/WeightRange"; import { ShippingZoneDetailsFragment } from "@saleor/graphql"; import useNavigator from "@saleor/hooks/useNavigator"; import { Button, DeleteIcon, ICONBUTTON_SIZE, makeStyles, } from "@saleor/macaw-ui"; import { ChannelProps } from "@saleor/types"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; import { maybe, renderCollection } from "../../../misc"; export interface ShippingZoneRatesProps extends ChannelProps { disabled: boolean; rates: ShippingZoneDetailsFragment["shippingMethods"]; variant: "price" | "weight"; testId?: string; onRateAdd: () => void; getRateEditHref: (id: string) => string; onRateRemove: (id: string) => void; } const useStyles = makeStyles( theme => ({ alignRight: { paddingRight: 24, width: `calc(${ICONBUTTON_SIZE}px + ${theme.spacing(0.5)})`, }, buttonColumn: { padding: "4px 0", width: "62px", }, nameColumn: { width: "auto", }, valueColumn: { width: "auto", }, }), { name: "ShippingZoneRates" }, ); const ShippingZoneRates: React.FC = props => { const { disabled, onRateAdd, getRateEditHref, onRateRemove, rates, selectedChannelId, variant, testId, } = props; const classes = useStyles(props); const navigate = useNavigator(); const intl = useIntl(); return ( } /> {variant === "price" ? intl.formatMessage({ id: "njUQPz", defaultMessage: "Value Range", description: "shipping method price range", }) : intl.formatMessage({ id: "aYhcie", defaultMessage: "Weight Range", description: "shipping method weight range", })} {renderCollection( rates, rate => { const channel = rate?.channelListings?.find( listing => listing.channel.id === selectedChannelId, ); return ( {maybe(() => rate.name, )} {maybe( () => rate && !channel ? ( "-" ) : variant === "price" ? ( ) : ( ), , )} {maybe( () => rate && !channel ? ( "-" ) : ( ), , )} navigate(getRateEditHref(rate.id))} className={classes.buttonColumn} > onRateRemove(rate.id)} className={classes.buttonColumn} > ); }, () => ( ), )} ); }; ShippingZoneRates.displayName = "ShippingZoneRates"; export default ShippingZoneRates;