forked from ericmbarnard/KoGrid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnavigation.js
31 lines (31 loc) · 1.32 KB
/
navigation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/// <reference path="../lib/jquery-1.8.2.min" />
/// <reference path="../lib/angular.js" />
/// <reference path="../src/constants.js"/>
/// <reference path="../src/namespace.js" />
/// <reference path="../src/utils.jsjs"/>
/// <reference path="classes/grid.js" />
//set event binding on the grid so we can select using the up/down keys
window.kg.moveSelectionHandler = function(grid, evt) {
// null checks
if (window.kg.utils.isNullOrUndefined(grid) || window.kg.utils.isNullOrUndefined(grid.config.selectedItems)) {
return true;
}
var charCode = evt.which || evt.keyCode,
// detect which direction for arrow keys to navigate the grid
offset = (charCode === 38 ? -1 : (charCode === 40 ? 1 : null));
if (!offset) {
return true;
}
var items = grid.renderedRows(),
index = items.indexOf(grid.selectionService.lastClickedRow) + offset;
if (index < 0 || index >= items.length) {
return true;
}
grid.selectionService.ChangeSelection(items[index], evt);
if (index > items.length - EXCESS_ROWS) {
grid.$viewport.scrollTop(grid.$viewport.scrollTop() + (grid.config.rowHeight * EXCESS_ROWS));
} else if (index < EXCESS_ROWS) {
grid.$viewport.scrollTop(grid.$viewport.scrollTop() - (grid.config.rowHeight * EXCESS_ROWS));
}
return false;
};