Avec la dernière version de ui-grid (v3.0.0-rc.16), il est possible de désactiver la barre de défilement horizontale et verticale séparément. Je l'ai fait fonctionner en échangeant
$scope.gridOptions.enableScrollbars = false;
avec
$scope.gridOptions.enableHorizontalScrollbar = 0;
$scope.gridOptions.enableVerticalScrollbar = 0;
Dans les sources de ui-grid, il y a trois constantes définies pour les barres de défilement:
scrollbars: {
NEVER: 0,
ALWAYS: 1,
WHEN_NEEDED: 2
}
Face au fait que ui-grid est toujours instable et change très souvent, je me sentirais plus à l'aise d'utiliser ces constantes au lieu des valeurs spécifiques. Mais comment puis-je y accéder?
J'ai ma réponse sur github:
Tout ce que je devais faire était de passer uiGridConstants à mon contrôleur comme ceci:
angular.module('myApp').controller('myCtrl',function($scope,uiGridConstants) {
...
$scope.gridOptions.enableHorizontalScrollbar = uiGridConstants.scrollbars.NEVER;
...
})
Avec le style John Papa:
ExampleController.$inject = ['$scope', 'uiGridConstants'];
function ExampleController($scope, uiGridConstants) {
var vm = this;
vm.gridOptions = {
enableHorizontalScrollbar : uiGridConstants.scrollbars.NEVER,
enableVerticalScrollbar : uiGridConstants.scrollbars.NEVER
};
}
Une solution de contournement (car WHEN_NEEDED est actuellement désactivé) consiste à définir enableHorizontalScrollbar: 0
sur votre gridOptions puis dans votre feuille de style ont les éléments suivants:
.ui-grid .ui-grid-render-container-body .ui-grid-viewport {
overflow-x: auto !important;
}
Désormais, la barre de défilement horizontale ne s'affiche qu'en cas de besoin.