From e6f2bb4351a085d1c3bbe8df32aee649004225b8 Mon Sep 17 00:00:00 2001 From: Kirk Swenson Date: Sat, 20 Jul 2024 09:39:53 -0700 Subject: [PATCH] fix: case table enter key advances to next row [PT-187967544] (#1362) --- v3/src/components/case-table/collection-table.tsx | 2 +- v3/src/components/case-table/use-selected-cell.ts | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/v3/src/components/case-table/collection-table.tsx b/v3/src/components/case-table/collection-table.tsx index d66dc72af..a94e4e120 100644 --- a/v3/src/components/case-table/collection-table.tsx +++ b/v3/src/components/case-table/collection-table.tsx @@ -84,7 +84,7 @@ export const CollectionTable = observer(function CollectionTable(props: IProps) args.onClose(true) // prevent RDG from handling the event event.preventGridDefault() - navigateToNextRow() + navigateToNextRow(event.shiftKey) } } diff --git a/v3/src/components/case-table/use-selected-cell.ts b/v3/src/components/case-table/use-selected-cell.ts index 272ef2019..112e1d261 100644 --- a/v3/src/components/case-table/use-selected-cell.ts +++ b/v3/src/components/case-table/use-selected-cell.ts @@ -21,13 +21,16 @@ export function useSelectedCell(gridRef: React.RefObject, : undefined }, []) - const navigateToNextRow = useCallback(() => { + const navigateToNextRow = useCallback((back = false) => { if (selectedCell.current?.columnId) { const idx = columns.findIndex(column => column.key === selectedCell.current?.columnId) - const rowIdx = selectedCell.current.rowIdx + 1 + const rowIdx = Math.max(0, selectedCell.current.rowIdx + (back ? -1 : 1)) const position = { idx, rowIdx } - gridRef.current?.selectCell(position, true) - collectionTableModel?.scrollRowIntoView(rowIdx) + // setTimeout so it occurs after handling of current event completes + setTimeout(() => { + collectionTableModel?.scrollRowIntoView(rowIdx) + gridRef.current?.selectCell(position, true) + }) } }, [collectionTableModel, columns, gridRef])