Skip to content

Commit

Permalink
Release v2.0.14
Browse files Browse the repository at this point in the history
  • Loading branch information
c0bra committed Nov 4, 2014
1 parent e32a214 commit b371a48
Show file tree
Hide file tree
Showing 8 changed files with 127 additions and 102 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ng-grid",
"version": "2.0.13",
"version": "2.0.14",
"homepage": "https://github.com/angular-ui/ng-grid",
"description": "Angular data grid",
"keywords": [
Expand Down
76 changes: 41 additions & 35 deletions build/ng-grid.debug.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ng-grid JavaScript Library
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
* Compiled At: 09/02/2014 10:22
* Compiled At: 11/04/2014 09:19
***********************************************/
(function(window, $) {
'use strict';
Expand Down Expand Up @@ -39,7 +39,11 @@ var ngGridFilters = angular.module('ngGrid.filters', []);
angular.module('ngGrid', ['ngGrid.services', 'ngGrid.directives', 'ngGrid.filters']);
//set event binding on the grid so we can select using the up/down keys
var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
if ($scope.selectionProvider.selectedItems === undefined) {
if ($scope.selectionProvider.selectedItems === undefined || grid.config.noKeyboardNavigation) {
return true;
}

if (document.activeElement.tagName === "INPUT") {
return true;
}

Expand All @@ -60,7 +64,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
if (charCode !== 37 && charCode !== 38 && charCode !== 39 && charCode !== 40 && (grid.config.noTabInterference || charCode !== 9) && charCode !== 13) {
return true;
}

if ($scope.enableCellSelection) {
if (charCode === 9) { //tab key
evt.preventDefault();
Expand All @@ -71,7 +75,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
var focusedOnLastVisibleColumns = newColumnIndex === (visibleCols.length - 1) || newColumnIndex === (visibleCols.length - 2);
var focusedOnLastColumn = visibleCols.indexOf($scope.col) === (visibleCols.length - 1);
var focusedOnLastPinnedColumn = pinnedCols.indexOf($scope.col) === (pinnedCols.length - 1);

if (charCode === 37 || charCode === 9 && evt.shiftKey) {
var scrollTo = 0;

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

grid.$viewport.scrollLeft(scrollTo);

}
else if (charCode === 39 || charCode === 9 && !evt.shiftKey) {
if (focusedOnLastVisibleColumns) {
if (focusedOnLastColumn && charCode === 9 && !evt.shiftKey) {
grid.$viewport.scrollLeft(0);
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
lastInRow = true;
}
else {
Expand All @@ -116,7 +120,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
}
}
}

var items;
if ($scope.configGroups.length > 0) {
items = grid.rowFactory.parsedData.filter(function (row) {
Expand All @@ -126,15 +130,15 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
else {
items = grid.filteredRows;
}

var offset = 0;
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
offset = -1;
}
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?
offset = 1;
}

if (offset) {
var r = items[rowIndex + offset];
if (r.beforeSelectionChange(r, evt)) {
Expand All @@ -149,7 +153,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
}
}
}

if ($scope.enableCellSelection) {
setTimeout(function(){
$scope.domAccessProvider.focusCellElement($scope, $scope.renderedColumns.indexOf(visibleCols[newColumnIndex]));
Expand Down Expand Up @@ -1075,32 +1079,34 @@ var ngEventProvider = function (grid, $scope, domUtilityService, $timeout) {
self.setDraggables = function() {
if (!grid.config.jqueryUIDraggable) {
//Fix for FireFox. Instead of using jQuery on('dragstart', function) on find, we have to use addEventListeners for each column.
var columns = grid.$root.find('.ngHeaderSortColumn'); //have to iterate if using addEventListener
angular.forEach(columns, function(col){
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
col.setAttribute('draggable', 'true');
//jQuery 'on' function doesn't have dataTransfer as part of event in handler unless added to event props, which is not recommended
//See more here: http://api.jquery.com/category/events/event-object/
if (col.addEventListener) { //IE8 doesn't have drag drop or event listeners
col.addEventListener('dragstart', self.dragStart);

angular.element(col).on('$destroy', function() {
angular.element(col).off('dragstart', self.dragStart);
col.removeEventListener('dragstart', self.dragStart);
});
if (grid.$root) {
var columns = grid.$root.find('.ngHeaderSortColumn'); //have to iterate if using addEventListener
angular.forEach(columns, function(col){
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
col.setAttribute('draggable', 'true');
//jQuery 'on' function doesn't have dataTransfer as part of event in handler unless added to event props, which is not recommended
//See more here: http://api.jquery.com/category/events/event-object/
if (col.addEventListener) { //IE8 doesn't have drag drop or event listeners
col.addEventListener('dragstart', self.dragStart);

angular.element(col).on('$destroy', function() {
angular.element(col).off('dragstart', self.dragStart);
col.removeEventListener('dragstart', self.dragStart);
});
}
}
}
});
if (navigator.userAgent.indexOf("MSIE") !== -1){
//call native IE dragDrop() to start dragging
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
sortColumn.bind('selectstart', function () {
this.dragDrop();
return false;
});
angular.element(sortColumn).on('$destroy', function() {
sortColumn.off('selectstart');
});
if (navigator.userAgent.indexOf("MSIE") !== -1){
//call native IE dragDrop() to start dragging
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
sortColumn.bind('selectstart', function () {
this.dragDrop();
return false;
});
angular.element(sortColumn).on('$destroy', function() {
sortColumn.off('selectstart');
});
}
}
} else {
if (grid.$root) {
Expand Down Expand Up @@ -3006,7 +3012,7 @@ var ngSelectionProvider = function (grid, $scope, $parse, $utils) {
if (!wasSelected && checkAll) {
self.selectedItems.push(rows[i].entity);
} else if (wasSelected && !checkAll) {
index = self.selectedItems.indexOf(rows[i].entity);
index = self.getSelectionIndex(rows[i].entity);
if (index > -1) {
self.selectedItems.splice(index, 1);
}
Expand Down
63 changes: 38 additions & 25 deletions build/ng-grid.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* ng-grid JavaScript Library
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
* Compiled At: 09/02/2014 10:22
* Compiled At: 11/04/2014 09:19
***********************************************/
(function(window, $) {
'use strict';
Expand Down Expand Up @@ -37,7 +37,11 @@ var ngGridFilters = angular.module('ngGrid.filters', []);
angular.module('ngGrid', ['ngGrid.services', 'ngGrid.directives', 'ngGrid.filters']);

var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
if ($scope.selectionProvider.selectedItems === undefined) {
if ($scope.selectionProvider.selectedItems === undefined || grid.config.noKeyboardNavigation) {
return true;
}

if (document.activeElement.tagName === "INPUT") {
return true;
}

Expand All @@ -58,6 +62,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
if (charCode !== 37 && charCode !== 38 && charCode !== 39 && charCode !== 40 && (grid.config.noTabInterference || charCode !== 9) && charCode !== 13) {
return true;
}

if ($scope.enableCellSelection) {
if (charCode === 9) {
evt.preventDefault();
Expand All @@ -68,6 +73,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
var focusedOnLastVisibleColumns = newColumnIndex === (visibleCols.length - 1) || newColumnIndex === (visibleCols.length - 2);
var focusedOnLastColumn = visibleCols.indexOf($scope.col) === (visibleCols.length - 1);
var focusedOnLastPinnedColumn = pinnedCols.indexOf($scope.col) === (pinnedCols.length - 1);

if (charCode === 37 || charCode === 9 && evt.shiftKey) {
var scrollTo = 0;

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

grid.$viewport.scrollLeft(scrollTo);

}
else if (charCode === 39 || charCode === 9 && !evt.shiftKey) {
if (focusedOnLastVisibleColumns) {
if (focusedOnLastColumn && charCode === 9 && !evt.shiftKey) {
grid.$viewport.scrollLeft(0);
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
newColumnIndex = $scope.showSelectionCheckbox ? 1 : 0;
lastInRow = true;
}
else {
Expand All @@ -111,6 +118,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
}
}
}

var items;
if ($scope.configGroups.length > 0) {
items = grid.rowFactory.parsedData.filter(function (row) {
Expand All @@ -120,13 +128,15 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
else {
items = grid.filteredRows;
}

var offset = 0;
if (rowIndex !== 0 && (charCode === 38 || charCode === 13 && evt.shiftKey || charCode === 9 && evt.shiftKey && firstInRow)) {
offset = -1;
}
else if (rowIndex !== items.length - 1 && (charCode === 40 || charCode === 13 && !evt.shiftKey || charCode === 9 && lastInRow)) {
offset = 1;
}

if (offset) {
var r = items[rowIndex + offset];
if (r.beforeSelectionChange(r, evt)) {
Expand All @@ -141,6 +151,7 @@ var ngMoveSelectionHandler = function($scope, elm, evt, grid) {
}
}
}

if ($scope.enableCellSelection) {
setTimeout(function(){
$scope.domAccessProvider.focusCellElement($scope, $scope.renderedColumns.indexOf(visibleCols[newColumnIndex]));
Expand Down Expand Up @@ -1017,29 +1028,31 @@ var ngEventProvider = function (grid, $scope, domUtilityService, $timeout) {
};
self.setDraggables = function() {
if (!grid.config.jqueryUIDraggable) {
var columns = grid.$root.find('.ngHeaderSortColumn');
angular.forEach(columns, function(col){
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
col.setAttribute('draggable', 'true');
if (col.addEventListener) {
col.addEventListener('dragstart', self.dragStart);

angular.element(col).on('$destroy', function() {
angular.element(col).off('dragstart', self.dragStart);
col.removeEventListener('dragstart', self.dragStart);
});
if (grid.$root) {
var columns = grid.$root.find('.ngHeaderSortColumn');
angular.forEach(columns, function(col){
if(col.className && col.className.indexOf("ngHeaderSortColumn") !== -1){
col.setAttribute('draggable', 'true');
if (col.addEventListener) {
col.addEventListener('dragstart', self.dragStart);

angular.element(col).on('$destroy', function() {
angular.element(col).off('dragstart', self.dragStart);
col.removeEventListener('dragstart', self.dragStart);
});
}
}
}
});
if (navigator.userAgent.indexOf("MSIE") !== -1){
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
sortColumn.bind('selectstart', function () {
this.dragDrop();
return false;
});
angular.element(sortColumn).on('$destroy', function() {
sortColumn.off('selectstart');
});
if (navigator.userAgent.indexOf("MSIE") !== -1){
var sortColumn = grid.$root.find('.ngHeaderSortColumn');
sortColumn.bind('selectstart', function () {
this.dragDrop();
return false;
});
angular.element(sortColumn).on('$destroy', function() {
sortColumn.off('selectstart');
});
}
}
} else {
if (grid.$root) {
Expand Down Expand Up @@ -2679,7 +2692,7 @@ var ngSelectionProvider = function (grid, $scope, $parse, $utils) {
if (!wasSelected && checkAll) {
self.selectedItems.push(rows[i].entity);
} else if (wasSelected && !checkAll) {
index = self.selectedItems.indexOf(rows[i].entity);
index = self.getSelectionIndex(rows[i].entity);
if (index > -1) {
self.selectedItems.splice(index, 1);
}
Expand Down
4 changes: 2 additions & 2 deletions build/ng-grid.min.js

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions ng-grid-2.0.13.min.js

This file was deleted.

Loading

0 comments on commit b371a48

Please sign in to comment.