From fcb15a20e2d9b29d56da418d4e0422ba455c7e0c Mon Sep 17 00:00:00 2001 From: SJCoetz Date: Mon, 3 Aug 2026 14:51:41 +0200 Subject: [PATCH] fix(stock-orders): keyboard a11y on pagination + soft row nav - Disabled pagination links (Previous at page 1, Next at last page) now also set tabIndex=-1 and preventDefault on click, so keyboard users can't activate them when at the boundary. aria-disabled + pointer-events-none blocked only mouse clicks. - Row click uses useRouter().push() instead of window.location.href for a soft navigation that preserves client state (consistent with the original /stock-orders page). Co-authored-by: Orca --- src/app/(app)/stock-orders/StockOrdersTable.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/app/(app)/stock-orders/StockOrdersTable.tsx b/src/app/(app)/stock-orders/StockOrdersTable.tsx index 0d26750..717957e 100644 --- a/src/app/(app)/stock-orders/StockOrdersTable.tsx +++ b/src/app/(app)/stock-orders/StockOrdersTable.tsx @@ -2,6 +2,7 @@ import { useState } from "react"; import Link from "next/link"; +import { useRouter } from "next/navigation"; import { Table, TableBody, @@ -105,6 +106,8 @@ export default function StockOrdersTable({ const [quickDraftOpen, setQuickDraftOpen] = useState(false); const [editingPurchaseId, setEditingPurchaseId] = useState(null); + const router = useRouter(); + const openEditForDraft = (purchaseId: string) => { setEditingPurchaseId(purchaseId); setQuickDraftOpen(true); @@ -200,7 +203,7 @@ export default function StockOrdersTable({ key={row.id} className="cursor-pointer" onClick={() => { - window.location.href = `/stock-orders/${row.id}`; + router.push(`/stock-orders/${row.id}`); }} > @@ -266,6 +269,10 @@ export default function StockOrdersTable({ { + if (page <= 1) e.preventDefault(); + }} className={cn( buttonVariants({ variant: "outline", size: "sm" }), page <= 1 && "pointer-events-none opacity-50", @@ -279,6 +286,10 @@ export default function StockOrdersTable({ = totalPages} + tabIndex={page >= totalPages ? -1 : undefined} + onClick={(e) => { + if (page >= totalPages) e.preventDefault(); + }} className={cn( buttonVariants({ variant: "outline", size: "sm" }), page >= totalPages && "pointer-events-none opacity-50",