From 5f8d049de31a967fb1641e5bbaedbb23a31cfff3 Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Wed, 21 Jan 2026 13:09:04 +0000 Subject: [PATCH] table rows as links --- .../frontend/src/components/issues-table.tsx | 96 +++++++++++++------ 1 file changed, 69 insertions(+), 27 deletions(-) diff --git a/packages/frontend/src/components/issues-table.tsx b/packages/frontend/src/components/issues-table.tsx index aeee09d..aa0f6ae 100644 --- a/packages/frontend/src/components/issues-table.tsx +++ b/packages/frontend/src/components/issues-table.tsx @@ -3,7 +3,7 @@ import Avatar from "@/components/avatar"; import { useSelection } from "@/components/selection-provider"; import StatusTag from "@/components/status-tag"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; -import { useIssues, useSelectedOrganisation } from "@/lib/query/hooks"; +import { useIssues, useSelectedOrganisation, useSelectedProject } from "@/lib/query/hooks"; import { cn } from "@/lib/utils"; export function IssuesTable({ @@ -16,10 +16,28 @@ export function IssuesTable({ const { selectedProjectId, selectedIssueId, selectIssue } = useSelection(); const { data: issuesData = [] } = useIssues(selectedProjectId); const selectedOrganisation = useSelectedOrganisation(); + const selectedProject = useSelectedProject(); const statuses = selectedOrganisation?.Organisation.statuses ?? {}; const issues = useMemo(() => [...issuesData].reverse(), [issuesData]); + const getIssueUrl = (issueNumber: number) => { + if (!selectedOrganisation || !selectedProject) return "#"; + const params = new URLSearchParams(); + params.set("o", selectedOrganisation.Organisation.slug.toLowerCase()); + params.set("p", selectedProject.Project.key.toLowerCase()); + params.set("i", issueNumber.toString()); + return `/app?${params.toString()}`; + }; + + const handleLinkClick = (e: React.MouseEvent) => { + if (e.metaKey || e.ctrlKey || e.shiftKey) { + e.stopPropagation(); + return; + } + e.preventDefault(); + }; + return (