Skip to content

Commit 1c1ea72

Browse files
Portugal, Marcelomportuga
Portugal, Marcelo
authored andcommitted
feat(GridRenderContainer): Added WHEN_NEEDED option back to ui-grid.
1 parent b21096b commit 1c1ea72

File tree

4 files changed

+23
-6
lines changed

4 files changed

+23
-6
lines changed

src/js/core/constants.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,13 @@
227227
* Available options are:
228228
* - `uiGridConstants.scrollbars.NEVER` - never show scrollbars in this direction
229229
* - `uiGridConstants.scrollbars.ALWAYS` - always show scrollbars in this direction
230+
* - `uiGridConstants.scrollbars.WHEN_NEEDED` - shows scrollbars in this direction when needed
230231
*/
231232

232233
scrollbars: {
233234
NEVER: 0,
234-
ALWAYS: 1
235-
//WHEN_NEEDED: 2
235+
ALWAYS: 1,
236+
WHEN_NEEDED: 2
236237
}
237238
});
238239

src/js/core/factories/GridOptions.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ angular.module('ui.grid')
410410
* @propertyOf ui.grid.class:GridOptions
411411
* @description {@link ui.grid.service:uiGridConstants#properties_scrollbars uiGridConstants.scrollbars.ALWAYS} by default.
412412
* This settings controls the vertical scrollbar for the grid.
413-
* Supported values: uiGridConstants.scrollbars.ALWAYS, uiGridConstants.scrollbars.NEVER
413+
* Supported values: uiGridConstants.scrollbars.ALWAYS, uiGridConstants.scrollbars.NEVER, uiGridConstants.scrollbars.WHEN_NEEDED
414414
*/
415415
baseOptions.enableVerticalScrollbar = typeof(baseOptions.enableVerticalScrollbar) !== "undefined" ? baseOptions.enableVerticalScrollbar : uiGridConstants.scrollbars.ALWAYS;
416416

@@ -420,7 +420,7 @@ angular.module('ui.grid')
420420
* @propertyOf ui.grid.class:GridOptions
421421
* @description {@link ui.grid.service:uiGridConstants#properties_scrollbars uiGridConstants.scrollbars.ALWAYS} by default.
422422
* This settings controls the horizontal scrollbar for the grid.
423-
* Supported values: uiGridConstants.scrollbars.ALWAYS, uiGridConstants.scrollbars.NEVER
423+
* Supported values: uiGridConstants.scrollbars.ALWAYS, uiGridConstants.scrollbars.NEVER, uiGridConstants.scrollbars.WHEN_NEEDED
424424
*/
425425
baseOptions.enableHorizontalScrollbar = typeof(baseOptions.enableHorizontalScrollbar) !== "undefined" ? baseOptions.enableHorizontalScrollbar : uiGridConstants.scrollbars.ALWAYS;
426426

src/js/core/factories/GridRenderContainer.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,10 @@ angular.module('ui.grid')
770770
GridRenderContainer.prototype.getViewportStyle = function () {
771771
var self = this;
772772
var styles = {};
773+
var scrollbarVisibility = {};
774+
775+
scrollbarVisibility[uiGridConstants.scrollbars.ALWAYS] = 'scroll';
776+
scrollbarVisibility[uiGridConstants.scrollbars.WHEN_NEEDED] = 'auto';
773777

774778
self.hasHScrollbar = false;
775779
self.hasVScrollbar = false;
@@ -800,8 +804,8 @@ angular.module('ui.grid')
800804
self.hasVScrollbar = !self.grid.isRTL() ? self.grid.options.enableVerticalScrollbar !== uiGridConstants.scrollbars.NEVER : false;
801805
}
802806

803-
styles['overflow-x'] = self.hasHScrollbar ? 'scroll' : 'hidden';
804-
styles['overflow-y'] = self.hasVScrollbar ? 'scroll' : 'hidden';
807+
styles['overflow-x'] = self.hasHScrollbar ? scrollbarVisibility[self.grid.options.enableHorizontalScrollbar] : 'hidden';
808+
styles['overflow-y'] = self.hasVScrollbar ? scrollbarVisibility[self.grid.options.enableVerticalScrollbar] : 'hidden';
805809

806810
return styles;
807811
};

test/unit/core/factories/GridRenderContainer.spec.js

+12
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ describe('GridRenderContainer factory', function() {
5757
expect(r.getViewportStyle()).toEqual({'overflow-x': 'hidden', 'overflow-y': 'scroll'});
5858
});
5959

60+
it('should have a vert scrollbar only when needed', function() {
61+
r.name = 'body';
62+
grid.options.enableVerticalScrollbar = uiGridConstants.scrollbars.WHEN_NEEDED;
63+
expect(r.getViewportStyle()).toEqual({'overflow-x': 'scroll', 'overflow-y': 'auto'});
64+
});
65+
66+
it('should have a horiz scrollbar only when needed', function() {
67+
r.name = 'body';
68+
grid.options.enableHorizontalScrollbar = uiGridConstants.scrollbars.WHEN_NEEDED;
69+
expect(r.getViewportStyle()).toEqual({'overflow-x': 'auto', 'overflow-y': 'scroll'});
70+
});
71+
6072
it('left should have a no scrollbar when not rtl', function() {
6173
r.name = 'left';
6274
expect(r.getViewportStyle()).toEqual({'overflow-x': 'hidden', 'overflow-y': 'hidden'});

0 commit comments

Comments
 (0)