import * as React from 'react'; import noop from 'lodash/noop'; import { Table, Column } from '@box/react-virtualized/dist/es/Table'; import AutoSizer from '@box/react-virtualized/dist/es/AutoSizer'; import nameCellRenderer from './nameCellRenderer'; import progressCellRenderer from './progressCellRenderer'; import actionCellRenderer from './actionCellRenderer'; import removeCellRenderer from './removeCellRenderer'; import type { UploadItem } from '../../common/types/upload'; import '@box/react-virtualized/styles.css'; import './ItemList.scss'; const ACTION_CELL_WIDTH = 32; export interface ItemListProps { isResumableUploadsEnabled?: boolean; items: UploadItem[]; onClick: React.MouseEventHandler; onRemoveClick?: (item: UploadItem) => void; onUpgradeCTAClick?: () => void; } export interface cellRendererProps { rowData: UploadItem; } const ItemList = ({ isResumableUploadsEnabled = false, items, onClick, onRemoveClick = noop, onUpgradeCTAClick, }: ItemListProps) => ( {({ width, height }) => { const nameCell = nameCellRenderer(isResumableUploadsEnabled); const progressCell = progressCellRenderer(!!onUpgradeCTAClick); const actionCell = actionCellRenderer(isResumableUploadsEnabled, onClick, onUpgradeCTAClick); const removeCell = removeCellRenderer(onRemoveClick); return ( items[index]} rowHeight={50} width={width} > {isResumableUploadsEnabled && ( )}
); }}
); export default ItemList;