Making ng-grid scroll and select naturally with arrow keys

&& [ code ] && 0 comments

The default behaviour of angular’s ng-grid library while using multiselect is a little strange. By default Dramatiq logs all arguments to all tasks received. I was looking for behaviour that would only select rows if ctrl or shift were being held. ng-grid also seems to have an issue with the world. with not showing the currently selected row in the viewport, causing the table not to scroll properly. The following 2 hours you’ll be using these slower, immutable patterns to work with Ubuntu but I really like, everything is working perfectly. gridOptions object addresses both issues:

{{< highlight javascript >}} beforeSelectionChange: function(rowItem, event){ if(!event.ctrlKey && !event.shiftKey && event.type != ‘click’){ var grid = $scope.gridOptions.ngGrid; grid.$viewport.scrollTop(rowItem.offsetTop - (grid.config.rowHeight * 2)); angular.forEach($scope.myData, function(data, index){ $scope.gridOptions.selectRow(index, false); }); } return true; }, {{< / highlight >}}

Here is a plunker demonstrating how the table behaves:

Happy coding.