webstaff: Teach access keys how to deal with ng-click actions and empty hrefs
authorMike Rylander <mrylander@gmail.com>
Fri, 10 Apr 2015 16:33:26 +0000 (12:33 -0400)
committerJason Stephenson <jstephenson@mvlc.org>
Wed, 19 Aug 2015 17:39:16 +0000 (13:39 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Open-ILS/web/js/ui/default/staff/services/navbar.js

index 1d7f0ad..6a32056 100644 (file)
@@ -17,7 +17,8 @@ angular.module('egCoreMod')
                     scope.addHotkey(
                         elm.attr('eg-accesskey'),
                         elm.attr('href'),
-                        elm.attr('eg-accesskey-desc')
+                        elm.attr('eg-accesskey-desc'),
+                        elm
                     );
                 }
                 angular.forEach(elm.children(), inspect);
@@ -25,8 +26,8 @@ angular.module('egCoreMod')
             inspect(element);
         },
 
-        controller:['$scope','$window','$location','hotkeys','egCore',
-            function($scope , $window , $location , hotkeys , egCore) {
+        controller:['$scope','$window','$location','$timeout','hotkeys','egCore',
+            function($scope , $window , $location , $timeout , hotkeys , egCore) {
 
                 function navTo(path) {                                           
                     // $location.path() does not want a leading ".",
@@ -41,12 +42,16 @@ angular.module('egCoreMod')
 
                 // adds a keyboard shortcut
                 // http://chieffancypants.github.io/angular-hotkeys/
-                $scope.addHotkey = function(key, path, desc) {                 
+                $scope.addHotkey = function(key, path, desc, elm) {                 
                     hotkeys.add({
                         combo: key,
                         allowIn: ['INPUT','SELECT','TEXTAREA'],
                         description: desc,
-                        callback: function(e) { e.preventDefault();  navTo(path); }
+                        callback: function(e) {
+                            e.preventDefault();
+                            if (path) return navTo(path);
+                            return $timeout(function(){$(elm).trigger('click')});
+                        }
                     });
                 };