Skip to content

Commit 6d3f006

Browse files
Sonakshi Guptamportuga
authored andcommitted
option to disable GridMenu close on scrolling
1 parent 5315d40 commit 6d3f006

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

packages/core/src/js/directives/ui-grid-menu.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,20 @@ function ($compile, $timeout, $window, $document, gridUtil, uiGridConstants, i18
154154
// *** Auto hide when click elsewhere ******
155155
var applyHideMenu = function(event) {
156156
if ($scope.shown) {
157-
if ($scope.col && $scope.col.filterContainer === 'columnMenu') {
158-
var elm = document.querySelector('.ui-grid-column-menu').querySelector('[ui-grid-filter]');
159-
if (elm && elm.contains(event.target)) {
160-
return false;
157+
var disableGridMenuHideOnScroll = uiGridCtrl && uiGridCtrl.grid && uiGridCtrl.grid.options ? uiGridCtrl.grid.options.disableGridMenuHideOnScroll : null;
158+
159+
if (event.type !== 'scroll' || !disableGridMenuHideOnScroll) {
160+
if ($scope.col && $scope.col.filterContainer === 'columnMenu') {
161+
var elm = document.querySelector('.ui-grid-column-menu').querySelector('[ui-grid-filter]');
162+
if (elm && elm.contains(event.target)) {
163+
return false;
164+
}
161165
}
162-
}
163166

164-
$scope.$apply(function () {
165-
$scope.hideMenu();
166-
});
167+
$scope.$apply(function () {
168+
$scope.hideMenu();
169+
});
170+
}
167171
}
168172
};
169173

packages/core/src/js/factories/GridOptions.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,14 @@ angular.module('ui.grid')
553553
*/
554554
baseOptions.gridMenuTemplate = baseOptions.gridMenuTemplate || 'ui-grid/uiGridMenu';
555555

556+
/**
557+
* @ngdoc string
558+
* @name disableGridMenuHideOnScroll
559+
* @propertyOf ui.grid.class:GridOptions
560+
* @description 'false' by default. When provided, this setting disables Grid Menu Hide On Scroll
561+
*/
562+
baseOptions.disableGridMenuHideOnScroll = baseOptions.disableGridMenuHideOnScroll || false;
563+
556564
/**
557565
* @ngdoc string
558566
* @name menuButtonTemplate

packages/core/src/js/factories/ScrollEvent.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
self.verticalScrollLength = -9999999;
5757
self.horizontalScrollLength = -999999;
5858

59+
self.type = 'scroll';
5960

6061
/**
6162
* @ngdoc function

packages/core/test/core/factories/GridOptions.spec.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ describe('GridOptions factory', function () {
5656
gridMenuTemplate: 'ui-grid/uiGridMenu',
5757
menuButtonTemplate: 'ui-grid/ui-grid-menu-button',
5858
menuItemTemplate: 'ui-grid/uiGridMenuItem',
59+
disableGridMenuHideOnScroll: false,
5960
appScopeProvider: null
6061
});
6162
});
@@ -107,6 +108,7 @@ describe('GridOptions factory', function () {
107108
menuButtonTemplate: 'testMenuButton',
108109
menuItemTemplate: 'testMenuItem',
109110
extraOption: 'testExtraOption',
111+
disableGridMenuHideOnScroll: true,
110112
appScopeProvider : 'anotherRef'
111113
};
112114
expect( GridOptions.initialize(options) ).toEqual({
@@ -155,6 +157,7 @@ describe('GridOptions factory', function () {
155157
menuButtonTemplate: 'testMenuButton',
156158
menuItemTemplate: 'testMenuItem',
157159
extraOption: 'testExtraOption',
160+
disableGridMenuHideOnScroll: true,
158161
appScopeProvider : 'anotherRef'
159162
});
160163
});
@@ -205,6 +208,7 @@ describe('GridOptions factory', function () {
205208
gridMenuTemplate: 'testGridMenu',
206209
menuButtonTemplate: 'testMenuButton',
207210
menuItemTemplate: 'testMenuItem',
211+
disableGridMenuHideOnScroll: false,
208212
extraOption: 'testExtraOption'
209213
};
210214
expect( GridOptions.initialize(options) ).toEqual({
@@ -253,6 +257,7 @@ describe('GridOptions factory', function () {
253257
menuButtonTemplate: 'testMenuButton',
254258
menuItemTemplate: 'testMenuItem',
255259
extraOption: 'testExtraOption',
260+
disableGridMenuHideOnScroll: false,
256261
appScopeProvider : null
257262
});
258263
});

0 commit comments

Comments
 (0)