From 1a035ca168c8f3dbe749801297e794f894e0840a Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Thu, 31 Mar 2022 16:01:06 +0200 Subject: [PATCH] #254 tab navigation in datagrid --- packages/web/src/datagrid/DataGridCore.svelte | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 831245bdd..86f641578 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -1139,7 +1139,7 @@ handleCursorMove(event); - if (event.shiftKey && event.keyCode != keycodes.shift) { + if (event.shiftKey && event.keyCode != keycodes.shift && event.keyCode != keycodes.tab) { selectedCells = getCellRange(shiftDragStartCell || currentCell, currentCell); } } @@ -1188,6 +1188,21 @@ return moveCurrentCell(currentCell[0] - visibleRowCountLowerBound, currentCell[1], event); case keycodes.pageDown: return moveCurrentCell(currentCell[0] + visibleRowCountLowerBound, currentCell[1], event); + case keycodes.tab: { + if (event.shiftKey) { + if (currentCell[1] > 0) { + return moveCurrentCell(currentCell[0], currentCell[1] - 1, event); + } else { + return moveCurrentCell(currentCell[0] - 1, columnSizes.realCount - 1, event); + } + } else { + if (currentCell[1] < columnSizes.realCount - 1) { + return moveCurrentCell(currentCell[0], currentCell[1] + 1, event); + } else { + return moveCurrentCell(currentCell[0] + 1, 0, event); + } + } + } } } return null;