From 999fb0b7da7f083ce7939433a36a955cdf056fb7 Mon Sep 17 00:00:00 2001 From: "a. bellenir" Date: Tue, 19 Jun 2018 18:25:05 -0400 Subject: [PATCH] LP#1669856 and LP#1776557: right clicks on egGrid select the row if right-clicking on a row that is not selected. use the defult browser context-menu when right-clicking on links in eg grids. Signed-off-by: a. bellenir Signed-off-by: Michele Morgan Signed-off-by: Chris Sharp --- .../web/js/ui/default/staff/services/grid.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Open-ILS/web/js/ui/default/staff/services/grid.js b/Open-ILS/web/js/ui/default/staff/services/grid.js index 688a2576f7..b3fbda7545 100644 --- a/Open-ILS/web/js/ui/default/staff/services/grid.js +++ b/Open-ILS/web/js/ui/default/staff/services/grid.js @@ -651,8 +651,23 @@ angular.module('egGridMod', if (!$scope.menu_dom) $scope.menu_dom = $($scope.grid_element).find('.grid-action-dropdown')[0]; if (!$scope.action_context_parent) $scope.action_context_parent = $($scope.menu_dom).parent(); - if (!grid.getSelectedItems().length) // Nothing selected, fire the click event - $event.target.click(); + // we need the index of the row that got right-clicked... + var e = $event.target; // the DOM element + var s = undefined; // the angular scope for that element + while(e){ // searching for the row so we can get its index from s.$index + // abort & use the browser default context menu for links (lp1669856): + if(e.tagName.toLowerCase() === 'a' && e.href){ return true; } + s = angular.element(e).scope(); + if(s.hasOwnProperty('item')){ break; } + e = e.parentElement; + } + /* $scope.items and $scope.selected indexes are "backwards" to each other. + $scope.items counts down from the top of the list (most recent item first) + $scope.selected counts forward as items are scanned (most recent item last) + s.$index is for $scope.items. we need the index for $scope.selected: */ + var selectable_index = ($scope.items.length-1) - s.$index; + // select the right-clicked row if it is not already selected (lp1776557): + if(!$scope.selected[selectable_index]){ $event.target.click(); } if (!$scope.action_context_showing) { $scope.action_context_width = $($scope.menu_dom).css('width'); -- 2.43.2