ng-grid
Version:
__Contributors:__
62 lines (59 loc) • 2.01 kB
JavaScript
ng.DomAccessProvider = function(grid) {
var self = this, previousColumn;
self.selectInputElement = function(elm){
var node = elm.nodeName.toLowerCase();
if(node == 'input' || node == 'textarea'){
elm.select();
}
};
self.focusCellElement = function($scope, index){
if($scope.selectionService.lastClickedRow){
var columnIndex = index != undefined ? index : previousColumn;
var elm = $scope.selectionService.lastClickedRow.clone ? $scope.selectionService.lastClickedRow.clone.elm : $scope.selectionService.lastClickedRow.elm;
if (columnIndex != undefined && elm) {
var columns = angular.element(elm[0].children).filter(function () { return this.nodeType != 8;}); //Remove html comments for IE8
var i = Math.max(Math.min($scope.renderedColumns.length - 1, columnIndex), 0);
if(grid.config.showSelectionCheckbox && angular.element(columns[i]).scope() && angular.element(columns[i]).scope().col.index == 0){
i = 1; //don't want to focus on checkbox
}
if (columns[i]) {
columns[i].children[0].focus();
}
previousColumn = columnIndex;
}
}
};
var changeUserSelect = function(elm, value) {
elm.css({
'-webkit-touch-callout': value,
'-webkit-user-select': value,
'-khtml-user-select': value,
'-moz-user-select': value == 'none'
? '-moz-none'
: value,
'-ms-user-select': value,
'user-select': value
});
};
self.selectionHandlers = function($scope, elm){
var doingKeyDown = false;
elm.bind('keydown', function(evt) {
if (evt.keyCode == 16) { //shift key
changeUserSelect(elm, 'none', evt);
return true;
} else if (!doingKeyDown) {
doingKeyDown = true;
var ret = ng.moveSelectionHandler($scope, elm, evt, grid);
doingKeyDown = false;
return ret;
}
return true;
});
elm.bind('keyup', function(evt) {
if (evt.keyCode == 16) { //shift key
changeUserSelect(elm, 'text', evt);
}
return true;
});
};
};