From 308a24c8c77eec2113f62e6414e4a200123ad180 Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Wed, 19 Aug 2026 11:47:12 +0100 Subject: [PATCH 1/4] fix(webapp): use native selectable row controls --- .../app/components/code/TSQLResultsTable.tsx | 43 +++++++++++++------ .../route.tsx | 5 +-- .../route.tsx | 6 ++- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/apps/webapp/app/components/code/TSQLResultsTable.tsx b/apps/webapp/app/components/code/TSQLResultsTable.tsx index c1a627b8db8..fd8ca7cacb3 100644 --- a/apps/webapp/app/components/code/TSQLResultsTable.tsx +++ b/apps/webapp/app/components/code/TSQLResultsTable.tsx @@ -926,19 +926,8 @@ function HeaderCellContent({ const [isFilterHovered, setIsFilterHovered] = useState(false); const sortHighlighted = isCellHovered && !isFilterHovered; - - return ( -
setIsCellHovered(true)} - onMouseLeave={() => setIsCellHovered(false)} - onClick={onSortClick} - > + const headerContent = ( + <> {tooltip ? (
{children} )} - {/* Sort indicator */} {canSort && ( )} + + ); + + return ( +
setIsCellHovered(true)} + onMouseLeave={() => setIsCellHovered(false)} + > + {canSort ? ( + + ) : ( + headerContent + )} {onFilterClick && ( ); })}
From 173a07bebfdaedaae509c7de59c599b00ac6d4dc Mon Sep 17 00:00:00 2001 From: Chris Arderne Date: Wed, 19 Aug 2026 12:58:31 +0100 Subject: [PATCH 2/4] fix(webapp): preserve selectable row layout and controls --- .../app/components/code/TSQLResultsTable.tsx | 47 +++++++------------ .../route.tsx | 2 +- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/apps/webapp/app/components/code/TSQLResultsTable.tsx b/apps/webapp/app/components/code/TSQLResultsTable.tsx index fd8ca7cacb3..c0be2281bb9 100644 --- a/apps/webapp/app/components/code/TSQLResultsTable.tsx +++ b/apps/webapp/app/components/code/TSQLResultsTable.tsx @@ -926,8 +926,21 @@ function HeaderCellContent({ const [isFilterHovered, setIsFilterHovered] = useState(false); const sortHighlighted = isCellHovered && !isFilterHovered; - const headerContent = ( - <> + + /* oxlint-disable jsx-a11y/click-events-have-key-events -- The sortable header contains separate tooltip and filter controls that cannot be nested in a button. */ + /* oxlint-disable jsx-a11y/no-static-element-interactions -- Preserve the existing full-header pointer target rather than nesting its child controls. */ + return ( +
setIsCellHovered(true)} + onMouseLeave={() => setIsCellHovered(false)} + onClick={onSortClick} + > {tooltip ? (
{children} )} + {/* Sort indicator */} {canSort && ( )} - - ); - - return ( -
setIsCellHovered(true)} - onMouseLeave={() => setIsCellHovered(false)} - > - {canSort ? ( - - ) : ( - headerContent - )} {onFilterClick && ( )} {onFilterClick && (