feat: double click to open directory in dir table
This commit is contained in:
@@ -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,9 +299,7 @@ export function DirectoryContentTableContent() {
|
|||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{table.getRowModel().rows?.length ? (
|
{table.getRowModel().rows?.length ? (
|
||||||
table
|
table.getRowModel().rows.map((row) => (
|
||||||
.getRowModel()
|
|
||||||
.rows.map((row) => (
|
|
||||||
<FileItemRow
|
<FileItemRow
|
||||||
key={row.id}
|
key={row.id}
|
||||||
row={row}
|
row={row}
|
||||||
@@ -300,6 +307,9 @@ export function DirectoryContentTableContent() {
|
|||||||
onContextMenu={(e) =>
|
onContextMenu={(e) =>
|
||||||
handleRowContextMenu(row, e)
|
handleRowContextMenu(row, e)
|
||||||
}
|
}
|
||||||
|
onDoubleClick={() => {
|
||||||
|
handleRowDoubleClick(row)
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
@@ -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}
|
||||||
|
Reference in New Issue
Block a user