import React from 'react'; import moment from 'moment'; // tslint:disable-next-line:match-default-export-name import formatFileSize from 'filesize'; import { Localizer } from '../../../types/Util'; interface Props { // Required i18n: Localizer; timestamp: number; // Optional fileName?: string | null; fileSize?: number; onClick?: () => void; shouldShowSeparator?: boolean; } const styles = { container: { width: '100%', height: 72, }, containerSeparator: { borderBottomWidth: 1, borderBottomColor: '#ccc', borderBottomStyle: 'solid', }, itemContainer: { cursor: 'pointer', display: 'flex', flexDirection: 'row', flexWrap: 'nowrap', alignItems: 'center', height: '100%', } as React.CSSProperties, itemMetadata: { display: 'inline-flex', flexDirection: 'column', flexGrow: 1, flexShrink: 0, marginLeft: 8, marginRight: 8, } as React.CSSProperties, itemDate: { display: 'inline-block', flexShrink: 0, }, itemIcon: { flexShrink: 0, }, itemFileName: { fontWeight: 'bold', } as React.CSSProperties, itemFileSize: { display: 'inline-block', marginTop: 8, fontSize: '80%', }, }; export class DocumentListItem extends React.Component { public static defaultProps: Partial = { shouldShowSeparator: true, }; public render() { const { shouldShowSeparator } = this.props; return (
{this.renderContent()}
); } private renderContent() { const { fileName, fileSize, timestamp, i18n } = this.props; return (
{i18n('fileIconAlt')}
{fileName} {typeof fileSize === 'number' ? formatFileSize(fileSize) : ''}
{moment(timestamp).format('ddd, MMM D, Y')}
); } }