highlighting implementation

This commit is contained in:
2026-01-31 14:17:01 +00:00
parent 71a4e68520
commit ab98e0ed80
2 changed files with 15 additions and 6 deletions

View File

@@ -29,10 +29,12 @@ export function IssuesTable({
columns = {}, columns = {},
className, className,
filters, filters,
highlighted,
}: { }: {
columns?: { id?: boolean; title?: boolean; description?: boolean; status?: boolean; assignee?: boolean }; columns?: { id?: boolean; title?: boolean; description?: boolean; status?: boolean; assignee?: boolean };
className: string; className: string;
filters?: IssuesTableFilters; filters?: IssuesTableFilters;
highlighted?: number[];
}) { }) {
const { selectedProjectId, selectedIssueId, selectIssue } = useSelection(); const { selectedProjectId, selectedIssueId, selectIssue } = useSelection();
const { data: issuesData = [] } = useIssues(selectedProjectId); const { data: issuesData = [] } = useIssues(selectedProjectId);
@@ -188,7 +190,7 @@ export function IssuesTable({
<TableCell <TableCell
className={cn( className={cn(
"font-medium border-r text-right p-0", "font-medium border-r text-right p-0",
isSelected && (isSelected || highlighted?.includes(issueData.Issue.id)) &&
"shadow-[inset_1px_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]", "shadow-[inset_1px_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]",
)} )}
> >
@@ -205,7 +207,7 @@ export function IssuesTable({
<TableCell <TableCell
className={cn( className={cn(
"min-w-0 p-0", "min-w-0 p-0",
isSelected && (isSelected || highlighted?.includes(issueData.Issue.id)) &&
"shadow-[inset_0_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]", "shadow-[inset_0_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]",
)} )}
> >
@@ -237,7 +239,7 @@ export function IssuesTable({
<TableCell <TableCell
className={cn( className={cn(
"overflow-hidden p-0", "overflow-hidden p-0",
isSelected && (isSelected || highlighted?.includes(issueData.Issue.id)) &&
"shadow-[inset_0_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]", "shadow-[inset_0_1px_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]",
)} )}
> >
@@ -254,7 +256,7 @@ export function IssuesTable({
<TableCell <TableCell
className={cn( className={cn(
"h-[32px] p-0", "h-[32px] p-0",
isSelected && (isSelected || highlighted?.includes(issueData.Issue.id)) &&
"shadow-[inset_0_1px_0_0_var(--personality),inset_-1px_0_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]", "shadow-[inset_0_1px_0_0_var(--personality),inset_-1px_0_0_0_var(--personality),inset_0_-1px_0_0_var(--personality)]",
)} )}
> >

View File

@@ -167,6 +167,8 @@ export default function Issues() {
} = useSelection(); } = useSelection();
const location = useLocation(); const location = useLocation();
const [highlighted, setHighlighted] = useState<number[]>([]);
const deepLinkParams = useMemo(() => { const deepLinkParams = useMemo(() => {
const params = new URLSearchParams(location.search); const params = new URLSearchParams(location.search);
const orgSlug = params.get("o")?.trim().toLowerCase() ?? ""; const orgSlug = params.get("o")?.trim().toLowerCase() ?? "";
@@ -667,7 +669,12 @@ export default function Issues() {
<ResizablePanelGroup className={`flex-1`}> <ResizablePanelGroup className={`flex-1`}>
<ResizablePanel id={"left"} minSize={400}> <ResizablePanel id={"left"} minSize={400}>
<div className="border w-full flex-shrink"> <div className="border w-full flex-shrink">
<IssuesTable columns={{ description: false }} className="w-full" filters={issueFilters} /> <IssuesTable
columns={{ description: false }}
className="w-full"
filters={issueFilters}
highlighted={highlighted}
/>
</div> </div>
</ResizablePanel> </ResizablePanel>
@@ -696,7 +703,7 @@ export default function Issues() {
/> />
)} )}
<Chat /> <Chat setHighlighted={setHighlighted} />
</main> </main>
); );
} }