gridoptions columndefs angular-ui-grid

angular-ui-grid - gridoptions - ui-grid columndefs



Ocultar barra de desplazamiento horizontal(ui-rejilla angular) (3)

Estoy tratando de ocultar la barra de desplazamiento horizontal de una ui-grid Angular, pero no puedo encontrar la propiedad correcta. (La propiedad enableScrollbars = false elimina ambos.)
¿Es posible eliminar solo la barra de desplazamiento horizontal?


Con la última versión en Github v3.0.0-rc.16 puede deshabilitar la barra de desplazamiento horizontal y vertical por separado. En lugar de

enableScrollbars = false;

utilizar

enableHorizontalScrollbar = value; enableVerticalScrollbar = value;

con

value = 0; /* NEVER */ value = 1; /* ALWAYS */ value = 2; /* WHEN_NEEDED */

ACTUALIZACIÓN: Si desea usar constantes en lugar del valor entero, mire la publicación correspondiente:

Usando las constantes de ui-grid para deshabilitar las barras de desplazamiento

ACTUALIZACIÓN: la opción WHEN_NEEDED no parece estar disponible en este momento. Tal vez esto se volverá a cambiar, así que busque las constantes disponibles en el código fuente.

Las constantes se definen en

https://github.com/angular-ui/ui-grid/blob/master/src/js/core/constants.js


En este momento, la opción WHEN_NEEDED no parece estar disponible en este momento (ui-grid 3.1.1). Así que he trabajado alrededor de jQuery y CSS:

Para simple, solo necesitamos hacer esto:

.ui-grid .ui-grid-render-container-body .ui-grid-viewport { overflow-x: auto !important; /* or use: overflow-x: hide!important; */ }

Para ser más flexibles, podemos usar CSS class y jQuery. Primero, agregamos una clase más:

.ui-grid-render-container-body .ui-grid-viewport.no-horizontal-bar { overflow-x: hidden !important; }

En controlador, usaremos esta clase por jQuery:

$timeout(function(){ if (!!$scope.gridOptions.data) { $(''.ui-grid-render-container-body .ui-grid-viewport'').addClass("no-horizontal-bar"); } });

Para ocultar el espacio en blanco al usar la selección y agrupación ( http://i.imgur.com/veevhgQ.png ), usamos:

$timeout(function(){ if (!!$scope.gridOptions.data) { /* To hide the blank gap when use selecting and grouping */ $(''.ui-grid-render-container-left .ui-grid-viewport'').height($(''.ui-grid-render-container-left .ui-grid-viewport'').height() + 17); $(''.ui-grid-render-container-body .ui-grid-viewport'').addClass("no-horizontal-bar"); } });

Con 17px es la altura de la brecha cuando usamos la función de selección y agrupación.

Demostración: http://plnkr.co/edit/D9PKPkvuRy2xA6UNNXCp?p=preview

Con esta solución podemos mostrar la barra horizontal de nuevo fácilmente.


Si tienes permiso para usar flexboxes:

.ui-grid-render-container-body { .ui-grid-header { padding-right: 17px; .ui-grid-header-viewport { width: 100%; .ui-grid-header-canvas { width: 100%; .ui-grid-header-cell-wrapper { display: block; width: 100%; .ui-grid-header-cell-row { display: flex; min-width: 0; .ui-grid-header-cell { flex: 1 1 0; min-width: @col-min-width; } } } } } } .ui-grid-viewport { overflow: auto !important; display: flex; .ui-grid-canvas { flex: auto; min-width: 0; [role="row"] { display: flex; min-width: 0; .ui-grid-cell { flex: 1 1 0; min-width: @col-min-width; } } } } }

Donde col-min-width es un minWidth que normalmente establecería en las gridOptions. También tiene que configurar el derecho de relleno del encabezado de la cuadrícula-ui (17px en este ejemplo) al ancho de la barra de desplazamiento de su navegador con el javascript en ciertos eventos: número de filas cambiado, tamaño del contenedor, etc. ancho de la barra de desplazamiento = ui- offsetWidth de grid-viewport - clientWidth. El uso de un valor codificado para el ancho de la barra de desplazamiento es malo porque los diferentes navegadores tienen valores diferentes (e incluso configurables) para eso.