web-dev-qa-db-fra.com

Utilisation de constantes ui-grid pour désactiver les barres de défilement

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?

Plunker: http://plnkr.co/edit/h0ewAZK616rKCH3T62te

25
nabinca

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;

    ...
})
49
nabinca

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
    };
}
15
Laura Riera

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.

11
Gethin