import React from 'react'; import { FolderIcon, EditIcon, DownloadIcon, TrashIcon, } from '../ui/icons'; import { getTagColorStyle } from '../utils/colors'; import DocumentThumbnailImage from './DocumentThumbnailImage'; import CorrespondentLinks from './CorrespondentLinks'; import { resolveCorrespondents } from './correspondents'; import { writeTagTransferData } from './tagTransfer'; const DocumentsList = ({ entries, focusedRowKey, selectedDocumentIdsSet, selectedFolderIdsSet, draggingDocumentIdsSet, draggedFolderId, ensureAssetUrl, getDocumentAsset, getDownloadHref, onFolderClick, onFolderSelect, onFolderDragOver, onFolderDragLeave, onFolderDrop, onFolderDragStart, onFolderDragEnd, onFolderRename, onFolderDelete, onDocumentClick, onDocumentOpen, onDocumentDragStart, onDocumentDragEnd, onDocumentTagDragOver, onDocumentTagDragLeave, onDocumentTagDrop, onDocumentRename, onDocumentDelete, tagLookupById, onTagClick, onCorrespondentClick, activeCorrespondentIdSet, scrollRef, }) => (
| Name | Issued | Actions | |
|---|---|---|---|
|
|
{folder.name}
|
{folder.id !== 'root' && onFolderRename && (
)}
|
|
|
|
{correspondents.length > 0 ? (
{(doc.tags || []).length > 0 && (
{(doc.tags || []).map((tag) => {
const colorSource = tag?.color || tagLookupById?.get(tag.id)?.color;
const style = getTagColorStyle(colorSource);
return (
{
event.stopPropagation();
onTagClick?.(tag.id);
}}
draggable
onDragStart={(event) => {
event.stopPropagation();
try {
if (event.dataTransfer) {
event.dataTransfer.effectAllowed = 'copyMove';
}
} catch (error) {
console.warn('[documents] Failed to configure drag effect', error);
}
writeTagTransferData(event.dataTransfer, tag, doc.id);
}}
onDragEnd={(event) => {
event.stopPropagation();
}}
onKeyDown={(event) => {
if (event.key === 'Enter' || event.key === ' ') {
event.preventDefault();
event.stopPropagation();
onTagClick?.(tag.id);
}
}}
>
{tag.label}
);
})}
)}
|
{(() => { const issuedAt = doc.issued_at || null; if (!issuedAt) { return '—'; } const timestamp = Date.parse(issuedAt); if (Number.isNaN(timestamp)) { return '—'; } return new Date(timestamp).toLocaleDateString(); })()} |
{onDocumentRename && (
)}
{downloadHref ? (
event.stopPropagation()}
onAuxClick={(event) => event.stopPropagation()}
onContextMenu={(event) => event.stopPropagation()}
>
|