import {ColumnConfig} from '@common/datatable/column-config'; import {DriveEntry} from '../../files/drive-entry'; import {Trans} from '@common/i18n/trans'; import {FileThumbnail} from '@common/uploads/file-type-icon/file-thumbnail'; import {FormattedDate} from '@common/i18n/formatted-date'; import {prettyBytes} from '@common/uploads/utils/pretty-bytes'; import React, {useContext} from 'react'; import memoize from 'nano-memoize'; import {TableContext} from '@common/ui/tables/table-context'; import {Checkbox} from '@common/ui/forms/toggle/checkbox'; import {EntryActionMenuTrigger} from '@app/drive/entry-actions/entry-action-menu-trigger'; import {IconButton} from '@common/ui/buttons/icon-button'; import {MoreVertIcon} from '@common/icons/material/MoreVert'; import clsx from 'clsx'; const formatFileSize = memoize(bytes => { return prettyBytes(bytes); }); export const fileTableColumns: ColumnConfig[] = [ { key: 'name', allowsSorting: true, header: () => , visibleInMode: 'all', width: 'flex-3 min-w-200', body: entry => , }, { key: 'updated_at', allowsSorting: true, maxWidth: 'max-w-184', header: () => , body: user => , }, { key: 'file_size', allowsSorting: true, header: () => , maxWidth: 'max-w-144', body: entry => formatFileSize(entry.file_size) ?? '-', }, { key: 'actions', hideHeader: true, header: () => , align: 'end', width: 'w-42 flex-shrink-0', visibleInMode: 'all', body: entry => , }, ]; function FileNameColumn({entry}: {entry: DriveEntry}) { const {isCollapsedMode} = useContext(TableContext); const sizeClassName = isCollapsedMode ? 'w-30 h-30' : 'w-24 h-24'; return (
{entry.name}
{isCollapsedMode && (
ยท
{formatFileSize(entry.file_size)}
)}
); } interface ActionsBodyProps { entry: DriveEntry; } function ActionsColumn({entry}: ActionsBodyProps) { const {selectedRows} = useContext(TableContext); return selectedRows.length ? ( ) : ( ); }