Rescue Paperjet v1 implementation
This commit is contained in:
parent
7ff5c8130d
commit
db9e2ca51b
83 changed files with 6186 additions and 3894 deletions
|
|
@ -6,7 +6,7 @@ import { formatDistanceToNow } from 'date-fns'
|
|||
import { ContextMenu } from './ContextMenu'
|
||||
|
||||
export const DocumentGrid = ({ isTrash }: { isTrash: boolean }) => {
|
||||
const { documents, selectedIds, isLoading, error, deleteDocument, restoreDocument, updateDocument } = useLibrary()
|
||||
const { documents, selectedIds, isLoading, error, toggleSelection, deleteDocument, restoreDocument, updateDocument } = useLibrary()
|
||||
const navigate = useNavigate()
|
||||
|
||||
const [contextMenu, setContextMenu] = useState<{ x: number, y: number, docId: string } | null>(null)
|
||||
|
|
@ -61,6 +61,16 @@ export const DocumentGrid = ({ isTrash }: { isTrash: boolean }) => {
|
|||
isSelected ? 'border-accent-500 shadow-md ring-2 ring-accent-500/50 scale-[1.02]' : 'hover:border-accent-300 dark:hover:border-accent-700'
|
||||
}`}
|
||||
>
|
||||
<label className="absolute right-3 top-3 z-20 flex h-7 w-7 cursor-pointer items-center justify-center rounded-full border border-white/80 bg-white/90 shadow-sm backdrop-blur transition-opacity group-hover:opacity-100 sm:opacity-0">
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={isSelected}
|
||||
onChange={() => toggleSelection(doc.id)}
|
||||
onClick={(event) => event.stopPropagation()}
|
||||
className="h-4 w-4 rounded border-neutral-300 text-accent-600 focus:ring-accent-500"
|
||||
aria-label={`Select ${doc.title}`}
|
||||
/>
|
||||
</label>
|
||||
{isSelected && (
|
||||
<div className="absolute top-3 left-3 z-20 w-6 h-6 bg-accent-500 rounded-full flex items-center justify-center shadow-md ring-2 ring-white">
|
||||
<svg className="w-4 h-4 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
|
|
@ -127,9 +137,13 @@ export const DocumentGrid = ({ isTrash }: { isTrash: boolean }) => {
|
|||
}
|
||||
}
|
||||
}}
|
||||
onDelete={() => deleteDocument(contextMenu.docId)}
|
||||
onDelete={() => {
|
||||
if (window.confirm('Move this document to Trash?')) void deleteDocument(contextMenu.docId)
|
||||
}}
|
||||
onRestore={() => restoreDocument(contextMenu.docId)}
|
||||
onHardDelete={() => deleteDocument(contextMenu.docId, true)}
|
||||
onHardDelete={() => {
|
||||
if (window.confirm('Delete this document permanently? This cannot be undone.')) void deleteDocument(contextMenu.docId, true)
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue