import { TableBody, TableCell, TableFooter, TableRow } from "@material-ui/core"; import Checkbox from "@saleor/components/Checkbox"; import Date from "@saleor/components/Date"; import Money from "@saleor/components/Money"; import Percent from "@saleor/components/Percent"; import ResponsiveTable from "@saleor/components/ResponsiveTable"; import Skeleton from "@saleor/components/Skeleton"; import TableCellHeader from "@saleor/components/TableCellHeader"; import TableHead from "@saleor/components/TableHead"; import { TablePaginationWithContext } from "@saleor/components/TablePagination"; import TableRowLink from "@saleor/components/TableRowLink"; import TooltipTableCellHeader from "@saleor/components/TooltipTableCellHeader"; import { commonTooltipMessages } from "@saleor/components/TooltipTableCellHeader/messages"; import { SaleListUrlSortField, saleUrl } from "@saleor/discounts/urls"; import { canBeSorted } from "@saleor/discounts/views/SaleList/sort"; import { SaleFragment, SaleType } from "@saleor/graphql"; import { makeStyles } from "@saleor/macaw-ui"; import { maybe, renderCollection } from "@saleor/misc"; import { ChannelProps, ListActions, ListProps, SortPage } from "@saleor/types"; import { getArrowDirection } from "@saleor/utils/sort"; import classNames from "classnames"; import React from "react"; import { FormattedMessage, useIntl } from "react-intl"; export interface SaleListProps extends ListProps, ListActions, SortPage, ChannelProps { sales: SaleFragment[]; } const useStyles = makeStyles( theme => ({ [theme.breakpoints.up("lg")]: { colEnd: { width: 250 }, colName: {}, colStart: { width: 250 }, colValue: { width: 200 } }, colEnd: { textAlign: "right" }, colName: { paddingLeft: 0 }, colStart: { textAlign: "right" }, colValue: { textAlign: "right" }, tableRow: { cursor: "pointer" }, textOverflow: { textOverflow: "ellipsis", overflow: "hidden" } }), { name: "SaleList" } ); const SaleList: React.FC = props => { const { settings, disabled, onUpdateListSettings, onSort, sales, selectedChannelId, isChecked, selected, sort, toggle, toggleAll, toolbar, filterDependency } = props; const classes = useStyles(props); const intl = useIntl(); const numberOfColumns = sales?.length === 0 ? 4 : 5; return ( onSort(SaleListUrlSortField.name)} className={classes.colName} > onSort(SaleListUrlSortField.startDate)} className={classes.colStart} > onSort(SaleListUrlSortField.endDate)} className={classes.colEnd} > onSort(SaleListUrlSortField.value)} disabled={ !canBeSorted(SaleListUrlSortField.value, !!selectedChannelId) } tooltip={intl.formatMessage(commonTooltipMessages.noFilterSelected, { filterName: filterDependency.label })} className={classes.colValue} > {renderCollection( sales, sale => { const isSelected = sale ? isChecked(sale.id) : false; const channel = sale?.channelListings?.find( lisiting => lisiting.channel.id === selectedChannelId ); return ( toggle(sale.id)} /> {maybe(() => sale.name, )} {sale && sale.startDate ? ( ) : ( )} {sale && sale.endDate ? ( ) : sale && sale.endDate === null ? ( "-" ) : ( )} {sale?.type && channel?.discountValue ? ( sale.type === SaleType.FIXED ? ( ) : channel?.discountValue ? ( ) : ( "-" ) ) : sale && !channel ? ( "_" ) : ( )} ); }, () => ( ) )} ); }; SaleList.displayName = "SaleList"; export default SaleList;