Skip to content

Commit b371a48

Browse files
committed
Release v2.0.14
1 parent e32a214 commit b371a48

File tree

8 files changed

+127
-102
lines changed

8 files changed

+127
-102
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ng-grid",
3-
"version": "2.0.13",
3+
"version": "2.0.14",
44
"homepage": "https://github.com/angular-ui/ng-grid",
55
"description": "Angular data grid",
66
"keywords": [

build/ng-grid.debug.js

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* ng-grid JavaScript Library
33
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md
44
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
5-
* Compiled At: 09/02/2014 10:22
5+
* Compiled At: 11/04/2014 09:19
66
***********************************************/
77
(function(window, $) {
88
'use strict';
@@ -39,7 +39,11 @@ var ngGridFilters = angular.module('ngGrid.filters', []);
3939
angular.module('ngGrid', ['ngGrid.services', 'ngGrid.directives', 'ngGrid.filters']);
4040
//set event binding on the grid so we can select using the up/down keys
4141
var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
42-
if ($scope.selectionProvider.selectedItems === undefined) {
42+
if ($scope.selectionProvider.selectedItems === undefined || grid.config.noKeyboardNavigation) {
43+
return true;
44+
}
45+
46+
if (document.activeElement.tagName === "INPUT") {
4347
return true;
4448
}
4549

@@ -60,7 +64,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
6064
if (charCode !== 37 && charCode !== 38 && charCode !== 39 && charCode !== 40 && (grid.config.noTabInterference || charCode !== 9) && charCode !== 13) {
6165
return true;
6266
}
63-
67+
6468
if ($scope.enableCellSelection) {
6569
if (charCode === 9) { //tab key
6670
evt.preventDefault();
@@ -71,7 +75,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
7175
var focusedOnLastVisibleColumns = newColumnIndex === (visibleCols.length - 1) || newColumnIndex === (visibleCols.length - 2);
7276
var focusedOnLastColumn = visibleCols.indexOf($scope.col) === (visibleCols.length - 1);
7377
var focusedOnLastPinnedColumn = pinnedCols.indexOf($scope.col) === (pinnedCols.length - 1);
74-
78+
7579
if (charCode === 37 || charCode === 9 && evt.shiftKey) {
7680
var scrollTo = 0;
7781

@@ -94,13 +98,13 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
9498
}
9599

96100
grid.$viewport.scrollLeft(scrollTo);
97-
101+
98102
}
99103
else if (charCode === 39 || charCode === 9 && !evt.shiftKey) {
100104
if (focusedOnLastVisibleColumns) {
101105
if (focusedOnLastColumn && charCode === 9 && !evt.shiftKey) {
102106
grid.$viewport.scrollLeft(0);
103-
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
107+
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
104108
lastInRow = true;
105109
}
106110
else {
@@ -116,7 +120,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
116120
}
117121
}
118122
}
119-
123+
120124
var items;
121125
if ($scope.configGroups.length > 0) {
122126
items = grid.rowFactory.parsedData.filter(function (row) {
@@ -126,15 +130,15 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
126130
else {
127131
items = grid.filteredRows;
128132
}
129-
133+
130134
var offset = 0;
131135
if (rowIndex !== 0 && (charCode === 38 || charCode === 13 && evt.shiftKey || charCode === 9 && evt.shiftKey && firstInRow)) { //arrow key up or shift enter or tab key and first item in row
132136
offset = -1;
133137
}
134138
else if (rowIndex !== items.length - 1 && (charCode === 40 || charCode === 13 && !evt.shiftKey || charCode === 9 && lastInRow)) {//arrow key down, enter, or tab key and last item in row?
135139
offset = 1;
136140
}
137-
141+
138142
if (offset) {
139143
var r = items[rowIndex + offset];
140144
if (r.beforeSelectionChange(r, evt)) {
@@ -149,7 +153,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
149153
}
150154
}
151155
}
152-
156+
153157
if ($scope.enableCellSelection) {
154158
setTimeout(function(){
155159
$scope.domAccessProvider.focusCellElement($scope, $scope.renderedColumns.indexOf(visibleCols[newColumnIndex]));
@@ -1075,32 +1079,34 @@ var ngEventProvider = function (grid, $scope, domUtilityService, $timeout) {
10751079
self.setDraggables = function() {
10761080
if (!grid.config.jqueryUIDraggable) {
10771081
//Fix for FireFox. Instead of using jQuery on('dragstart', function) on find, we have to use addEventListeners for each column.
1078-
var columns = grid.$root.find('.ngHeaderSortColumn'); //have to iterate if using addEventListener
1079-
angular.forEach(columns, function(col){
1080-
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
1081-
col.setAttribute('draggable', 'true');
1082-
//jQuery 'on' function doesn't have dataTransfer as part of event in handler unless added to event props, which is not recommended
1083-
//See more here: http://api.jquery.com/category/events/event-object/
1084-
if (col.addEventListener) { //IE8 doesn't have drag drop or event listeners
1085-
col.addEventListener('dragstart', self.dragStart);
1086-
1087-
angular.element(col).on('$destroy', function() {
1088-
angular.element(col).off('dragstart', self.dragStart);
1089-
col.removeEventListener('dragstart', self.dragStart);
1090-
});
1082+
if (grid.$root) {
1083+
var columns = grid.$root.find('.ngHeaderSortColumn'); //have to iterate if using addEventListener
1084+
angular.forEach(columns, function(col){
1085+
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
1086+
col.setAttribute('draggable', 'true');
1087+
//jQuery 'on' function doesn't have dataTransfer as part of event in handler unless added to event props, which is not recommended
1088+
//See more here: http://api.jquery.com/category/events/event-object/
1089+
if (col.addEventListener) { //IE8 doesn't have drag drop or event listeners
1090+
col.addEventListener('dragstart', self.dragStart);
1091+
1092+
angular.element(col).on('$destroy', function() {
1093+
angular.element(col).off('dragstart', self.dragStart);
1094+
col.removeEventListener('dragstart', self.dragStart);
1095+
});
1096+
}
10911097
}
1092-
}
1093-
});
1094-
if (navigator.userAgent.indexOf("MSIE") !== -1){
1095-
//call native IE dragDrop() to start dragging
1096-
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
1097-
sortColumn.bind('selectstart', function () {
1098-
this.dragDrop();
1099-
return false;
1100-
});
1101-
angular.element(sortColumn).on('$destroy', function() {
1102-
sortColumn.off('selectstart');
11031098
});
1099+
if (navigator.userAgent.indexOf("MSIE") !== -1){
1100+
//call native IE dragDrop() to start dragging
1101+
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
1102+
sortColumn.bind('selectstart', function () {
1103+
this.dragDrop();
1104+
return false;
1105+
});
1106+
angular.element(sortColumn).on('$destroy', function() {
1107+
sortColumn.off('selectstart');
1108+
});
1109+
}
11041110
}
11051111
} else {
11061112
if (grid.$root) {
@@ -3006,7 +3012,7 @@ var ngSelectionProvider = function (grid, $scope, $parse, $utils) {
30063012
if (!wasSelected && checkAll) {
30073013
self.selectedItems.push(rows[i].entity);
30083014
} else if (wasSelected && !checkAll) {
3009-
index = self.selectedItems.indexOf(rows[i].entity);
3015+
index = self.getSelectionIndex(rows[i].entity);
30103016
if (index > -1) {
30113017
self.selectedItems.splice(index, 1);
30123018
}

build/ng-grid.js

Lines changed: 38 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* ng-grid JavaScript Library
33
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md
44
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
5-
* Compiled At: 09/02/2014 10:22
5+
* Compiled At: 11/04/2014 09:19
66
***********************************************/
77
(function(window, $) {
88
'use strict';
@@ -37,7 +37,11 @@ var ngGridFilters = angular.module('ngGrid.filters', []);
3737
angular.module('ngGrid', ['ngGrid.services', 'ngGrid.directives', 'ngGrid.filters']);
3838

3939
var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
40-
if ($scope.selectionProvider.selectedItems === undefined) {
40+
if ($scope.selectionProvider.selectedItems === undefined || grid.config.noKeyboardNavigation) {
41+
return true;
42+
}
43+
44+
if (document.activeElement.tagName === "INPUT") {
4145
return true;
4246
}
4347

@@ -58,6 +62,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
5862
if (charCode !== 37 && charCode !== 38 && charCode !== 39 && charCode !== 40 && (grid.config.noTabInterference || charCode !== 9) && charCode !== 13) {
5963
return true;
6064
}
65+
6166
if ($scope.enableCellSelection) {
6267
if (charCode === 9) {
6368
evt.preventDefault();
@@ -68,6 +73,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
6873
var focusedOnLastVisibleColumns = newColumnIndex === (visibleCols.length - 1) || newColumnIndex === (visibleCols.length - 2);
6974
var focusedOnLastColumn = visibleCols.indexOf($scope.col) === (visibleCols.length - 1);
7075
var focusedOnLastPinnedColumn = pinnedCols.indexOf($scope.col) === (pinnedCols.length - 1);
76+
7177
if (charCode === 37 || charCode === 9 && evt.shiftKey) {
7278
var scrollTo = 0;
7379

@@ -90,12 +96,13 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
9096
}
9197

9298
grid.$viewport.scrollLeft(scrollTo);
99+
93100
}
94101
else if (charCode === 39 || charCode === 9 && !evt.shiftKey) {
95102
if (focusedOnLastVisibleColumns) {
96103
if (focusedOnLastColumn && charCode === 9 && !evt.shiftKey) {
97104
grid.$viewport.scrollLeft(0);
98-
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
105+
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
99106
lastInRow = true;
100107
}
101108
else {
@@ -111,6 +118,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
111118
}
112119
}
113120
}
121+
114122
var items;
115123
if ($scope.configGroups.length > 0) {
116124
items = grid.rowFactory.parsedData.filter(function (row) {
@@ -120,13 +128,15 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
120128
else {
121129
items = grid.filteredRows;
122130
}
131+
123132
var offset = 0;
124133
if (rowIndex !== 0 && (charCode === 38 || charCode === 13 && evt.shiftKey || charCode === 9 && evt.shiftKey && firstInRow)) {
125134
offset = -1;
126135
}
127136
else if (rowIndex !== items.length - 1 && (charCode === 40 || charCode === 13 && !evt.shiftKey || charCode === 9 && lastInRow)) {
128137
offset = 1;
129138
}
139+
130140
if (offset) {
131141
var r = items[rowIndex + offset];
132142
if (r.beforeSelectionChange(r, evt)) {
@@ -141,6 +151,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
141151
}
142152
}
143153
}
154+
144155
if ($scope.enableCellSelection) {
145156
setTimeout(function(){
146157
$scope.domAccessProvider.focusCellElement($scope, $scope.renderedColumns.indexOf(visibleCols[newColumnIndex]));
@@ -1017,29 +1028,31 @@ var ngEventProvider = function (grid, $scope, domUtilityService, $timeout) {
10171028
};
10181029
self.setDraggables = function() {
10191030
if (!grid.config.jqueryUIDraggable) {
1020-
var columns = grid.$root.find('.ngHeaderSortColumn');
1021-
angular.forEach(columns, function(col){
1022-
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
1023-
col.setAttribute('draggable', 'true');
1024-
if (col.addEventListener) {
1025-
col.addEventListener('dragstart', self.dragStart);
1026-
1027-
angular.element(col).on('$destroy', function() {
1028-
angular.element(col).off('dragstart', self.dragStart);
1029-
col.removeEventListener('dragstart', self.dragStart);
1030-
});
1031+
if (grid.$root) {
1032+
var columns = grid.$root.find('.ngHeaderSortColumn');
1033+
angular.forEach(columns, function(col){
1034+
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
1035+
col.setAttribute('draggable', 'true');
1036+
if (col.addEventListener) {
1037+
col.addEventListener('dragstart', self.dragStart);
1038+
1039+
angular.element(col).on('$destroy', function() {
1040+
angular.element(col).off('dragstart', self.dragStart);
1041+
col.removeEventListener('dragstart', self.dragStart);
1042+
});
1043+
}
10311044
}
1032-
}
1033-
});
1034-
if (navigator.userAgent.indexOf("MSIE") !== -1){
1035-
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
1036-
sortColumn.bind('selectstart', function () {
1037-
this.dragDrop();
1038-
return false;
1039-
});
1040-
angular.element(sortColumn).on('$destroy', function() {
1041-
sortColumn.off('selectstart');
10421045
});
1046+
if (navigator.userAgent.indexOf("MSIE") !== -1){
1047+
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
1048+
sortColumn.bind('selectstart', function () {
1049+
this.dragDrop();
1050+
return false;
1051+
});
1052+
angular.element(sortColumn).on('$destroy', function() {
1053+
sortColumn.off('selectstart');
1054+
});
1055+
}
10431056
}
10441057
} else {
10451058
if (grid.$root) {
@@ -2679,7 +2692,7 @@ var ngSelectionProvider = function (grid, $scope, $parse, $utils) {
26792692
if (!wasSelected && checkAll) {
26802693
self.selectedItems.push(rows[i].entity);
26812694
} else if (wasSelected && !checkAll) {
2682-
index = self.selectedItems.indexOf(rows[i].entity);
2695+
index = self.getSelectionIndex(rows[i].entity);
26832696
if (index > -1) {
26842697
self.selectedItems.splice(index, 1);
26852698
}

build/ng-grid.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ng-grid-2.0.13.min.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)