@@ -226,20 +226,26 @@ export const CollectionTable = observer(function CollectionTable(props: IProps)
226226 }
227227 } , [ collectionTableModel ?. rows , collectionTableModel ?. inputRowIndex , showInputRow ] )
228228
229- const { handleSelectedCellChange, navigateToNextRow } = useSelectedCell ( gridRef , columns , rows )
229+ const { handleSelectedCellChange, navigateToNextCell , navigateToNextRow } = useSelectedCell ( gridRef , columns , rows )
230230
231231 const handleCellKeyDown = useCallback ( ( args : TCellKeyDownArgs , event : CellKeyboardEvent ) => {
232232 // By default in RDG, the enter/return key simply enters/exits edit mode without moving the
233233 // selected cell. In CODAP, the enter/return key should accept the edit _and_ advance to the
234234 // next row. To achieve this in RDG, we provide this callback, which is called before RDG
235235 // handles the event internally. If we get an enter/return key while in edit mode, we handle
236236 // it ourselves and call `preventGridDefault()` to prevent RDG from handling the event itself.
237- if ( args . mode === "EDIT" && event . key === "Enter" ) {
237+ if ( args . mode === "EDIT" && [ "Enter" , "Tab" , "ArrowUp" , "ArrowDown" ] . includes ( event . key ) ) {
238238 // complete the cell edit
239239 args . onClose ( true )
240240 // prevent RDG from handling the event
241241 event . preventGridDefault ( )
242- navigateToNextRow ( event . shiftKey )
242+ if ( [ "Enter" , "ArrowUp" , "ArrowDown" ] . includes ( event . key ) ) {
243+ const reverse = event . shiftKey || event . key === "ArrowUp"
244+ navigateToNextRow ( reverse )
245+ }
246+ if ( event . key === "Tab" ) {
247+ navigateToNextCell ( event . shiftKey )
248+ }
243249 }
244250 if ( ( event . key === "ArrowDown" || event . key === "ArrowUp" ) ) {
245251 const caseId = args . row . __id__
@@ -286,7 +292,7 @@ export const CollectionTable = observer(function CollectionTable(props: IProps)
286292 }
287293 }
288294 }
289- } , [ collection , collectionId , data , navigateToNextRow , onScrollRowRangeIntoView ] )
295+ } , [ collection , collectionId , data , navigateToNextCell , navigateToNextRow , onScrollRowRangeIntoView ] )
290296
291297 const handleClick = ( event : React . PointerEvent < HTMLDivElement > ) => {
292298 // See if mouse has moved beyond kMouseMovementThreshold since initial mousedown
0 commit comments