From 32f6c779c0e088d2d6c82baeb4bf9a4242105491 Mon Sep 17 00:00:00 2001 From: waleed Date: Mon, 11 May 2026 18:05:01 -0700 Subject: [PATCH 1/2] fix(tables): cmd+a always selects all cells on the table page --- .../components/table-grid/table-grid.tsx | 46 +++++++++++-------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx index f5ec1b8cb3..3ec762be0c 100644 --- a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx +++ b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx @@ -1527,25 +1527,6 @@ export function TableGrid({ return } - if ((e.metaKey || e.ctrlKey) && e.key === 'a') { - e.preventDefault() - const rws = rowsRef.current - const currentCols = columnsRef.current - if (rws.length > 0 && currentCols.length > 0) { - suppressFocusScrollRef.current = true - setEditingCell(null) - setRowSelection((prev) => (prev.kind === 'none' ? prev : ROW_SELECTION_NONE)) - lastCheckboxRowRef.current = null - setSelectionAnchor({ rowIndex: 0, colIndex: 0 }) - setSelectionFocus({ - rowIndex: rws.length - 1, - colIndex: currentCols.length - 1, - }) - setIsColumnSelection(false) - } - return - } - if ((e.metaKey || e.ctrlKey) && e.key === ' ') { const a = selectionAnchorRef.current if (!a || editingCellRef.current) return @@ -2281,6 +2262,33 @@ export function TableGrid({ } }, []) + useEffect(() => { + if (embedded) return + const handleSelectAll = (e: KeyboardEvent) => { + if (!(e.metaKey || e.ctrlKey) || e.key !== 'a') return + const target = e.target as HTMLElement + const tag = target.tagName + if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return + if (target.isContentEditable) return + if (target.closest('[role="dialog"]')) return + if (!containerRef.current) return + e.preventDefault() + const rws = rowsRef.current + const currentCols = columnsRef.current + if (rws.length > 0 && currentCols.length > 0) { + suppressFocusScrollRef.current = true + setEditingCell(null) + setRowSelection((prev) => (prev.kind === 'none' ? prev : ROW_SELECTION_NONE)) + lastCheckboxRowRef.current = null + setSelectionAnchor({ rowIndex: 0, colIndex: 0 }) + setSelectionFocus({ rowIndex: rws.length - 1, colIndex: currentCols.length - 1 }) + setIsColumnSelection(false) + } + } + document.addEventListener('keydown', handleSelectAll) + return () => document.removeEventListener('keydown', handleSelectAll) + }, [embedded]) + const navigateAfterSave = useCallback((reason: SaveReason) => { const anchor = selectionAnchorRef.current if (!anchor) return From 2309ee71a490c647f8a2720d57e08f6cb83aec1d Mon Sep 17 00:00:00 2001 From: waleed Date: Mon, 11 May 2026 18:10:58 -0700 Subject: [PATCH 2/2] fix(tables): move preventDefault inside non-empty guard --- .../tables/[tableId]/components/table-grid/table-grid.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx index 3ec762be0c..2640e0a145 100644 --- a/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx +++ b/apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx @@ -2272,10 +2272,10 @@ export function TableGrid({ if (target.isContentEditable) return if (target.closest('[role="dialog"]')) return if (!containerRef.current) return - e.preventDefault() const rws = rowsRef.current const currentCols = columnsRef.current if (rws.length > 0 && currentCols.length > 0) { + e.preventDefault() suppressFocusScrollRef.current = true setEditingCell(null) setRowSelection((prev) => (prev.kind === 'none' ? prev : ROW_SELECTION_NONE))