feat: double click to open directory in dir table

This commit is contained in:
2025-09-21 15:18:32 +00:00
parent 39c0268ded
commit de8a53d7a8

View File

@@ -6,7 +6,7 @@ import {
newFileHandle, newFileHandle,
} from "@fileone/convex/model/filesystem" } from "@fileone/convex/model/filesystem"
import { useMutation } from "@tanstack/react-query" import { useMutation } from "@tanstack/react-query"
import { Link } from "@tanstack/react-router" import { Link, useNavigate } from "@tanstack/react-router"
import { import {
type ColumnDef, type ColumnDef,
flexRender, flexRender,
@@ -216,6 +216,7 @@ export function DirectoryContentTableContent() {
const optimisticDeletedItems = useAtomValue(optimisticDeletedItemsAtom) const optimisticDeletedItems = useAtomValue(optimisticDeletedItemsAtom)
const setContextMenuTargetItem = useSetAtom(contextMenuTargeItemAtom) const setContextMenuTargetItem = useSetAtom(contextMenuTargeItemAtom)
const store = useStore() const store = useStore()
const navigate = useNavigate()
const handleRowContextMenu = ( const handleRowContextMenu = (
row: Row<DirectoryItem>, row: Row<DirectoryItem>,
@@ -265,6 +266,14 @@ export function DirectoryContentTableContent() {
} }
} }
const handleRowDoubleClick = (row: Row<DirectoryItem>) => {
if (row.original.kind === "directory") {
navigate({
to: `/directories/${row.original.doc._id}`,
})
}
}
return ( return (
<div className="overflow-hidden"> <div className="overflow-hidden">
<Table> <Table>
@@ -290,18 +299,19 @@ export function DirectoryContentTableContent() {
</TableHeader> </TableHeader>
<TableBody> <TableBody>
{table.getRowModel().rows?.length ? ( {table.getRowModel().rows?.length ? (
table table.getRowModel().rows.map((row) => (
.getRowModel() <FileItemRow
.rows.map((row) => ( key={row.id}
<FileItemRow row={row}
key={row.id} onClick={() => selectRow(row)}
row={row} onContextMenu={(e) =>
onClick={() => selectRow(row)} handleRowContextMenu(row, e)
onContextMenu={(e) => }
handleRowContextMenu(row, e) onDoubleClick={() => {
} handleRowDoubleClick(row)
/> }}
)) />
))
) : ( ) : (
<NoResultsRow /> <NoResultsRow />
)} )}
@@ -426,10 +436,12 @@ function FileItemRow({
row, row,
onClick, onClick,
onContextMenu, onContextMenu,
onDoubleClick,
}: { }: {
row: Row<DirectoryItem> row: Row<DirectoryItem>
onClick: () => void onClick: () => void
onContextMenu: (e: React.MouseEvent) => void onContextMenu: (e: React.MouseEvent) => void
onDoubleClick: () => void
}) { }) {
const ref = useRef<HTMLTableRowElement>(null) const ref = useRef<HTMLTableRowElement>(null)
const setDragInfo = useSetAtom(dragInfoAtom) const setDragInfo = useSetAtom(dragInfoAtom)
@@ -467,6 +479,7 @@ function FileItemRow({
key={row.id} key={row.id}
data-state={row.getIsSelected() && "selected"} data-state={row.getIsSelected() && "selected"}
onClick={onClick} onClick={onClick}
onDoubleClick={onDoubleClick}
onContextMenu={onContextMenu} onContextMenu={onContextMenu}
onDragStart={handleDragStart} onDragStart={handleDragStart}
onDragEnd={handleDragEnd} onDragEnd={handleDragEnd}