From de8a53d7a8feed7fd986c34a9e4cc81e59d66d97 Mon Sep 17 00:00:00 2001 From: kenneth Date: Sun, 21 Sep 2025 15:18:32 +0000 Subject: [PATCH] feat: double click to open directory in dir table --- .../directory-content-table.tsx | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/packages/web/src/directories/directory-page/directory-content-table.tsx b/packages/web/src/directories/directory-page/directory-content-table.tsx index bda287c..53e8c40 100644 --- a/packages/web/src/directories/directory-page/directory-content-table.tsx +++ b/packages/web/src/directories/directory-page/directory-content-table.tsx @@ -6,7 +6,7 @@ import { newFileHandle, } from "@fileone/convex/model/filesystem" import { useMutation } from "@tanstack/react-query" -import { Link } from "@tanstack/react-router" +import { Link, useNavigate } from "@tanstack/react-router" import { type ColumnDef, flexRender, @@ -216,6 +216,7 @@ export function DirectoryContentTableContent() { const optimisticDeletedItems = useAtomValue(optimisticDeletedItemsAtom) const setContextMenuTargetItem = useSetAtom(contextMenuTargeItemAtom) const store = useStore() + const navigate = useNavigate() const handleRowContextMenu = ( row: Row, @@ -265,6 +266,14 @@ export function DirectoryContentTableContent() { } } + const handleRowDoubleClick = (row: Row) => { + if (row.original.kind === "directory") { + navigate({ + to: `/directories/${row.original.doc._id}`, + }) + } + } + return (
@@ -290,18 +299,19 @@ export function DirectoryContentTableContent() { {table.getRowModel().rows?.length ? ( - table - .getRowModel() - .rows.map((row) => ( - selectRow(row)} - onContextMenu={(e) => - handleRowContextMenu(row, e) - } - /> - )) + table.getRowModel().rows.map((row) => ( + selectRow(row)} + onContextMenu={(e) => + handleRowContextMenu(row, e) + } + onDoubleClick={() => { + handleRowDoubleClick(row) + }} + /> + )) ) : ( )} @@ -426,10 +436,12 @@ function FileItemRow({ row, onClick, onContextMenu, + onDoubleClick, }: { row: Row onClick: () => void onContextMenu: (e: React.MouseEvent) => void + onDoubleClick: () => void }) { const ref = useRef(null) const setDragInfo = useSetAtom(dragInfoAtom) @@ -467,6 +479,7 @@ function FileItemRow({ key={row.id} data-state={row.getIsSelected() && "selected"} onClick={onClick} + onDoubleClick={onDoubleClick} onContextMenu={onContextMenu} onDragStart={handleDragStart} onDragEnd={handleDragEnd}