From 610ea22ea770821fac04f3d757f98091a85512c7 Mon Sep 17 00:00:00 2001 From: Annabel Dunstone Gray Date: Wed, 29 Mar 2017 13:58:18 -0500 Subject: [PATCH] Map bindings to lowercase letters; only show key bindings when using keyboard shortcut --- app/assets/javascripts/shortcuts.js | 56 ++++++++++++---------- app/views/layouts/nav/_dashboard.html.haml | 28 +++++------ 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/app/assets/javascripts/shortcuts.js b/app/assets/javascripts/shortcuts.js index ef32cc39c1f..24b6ad02b25 100644 --- a/app/assets/javascripts/shortcuts.js +++ b/app/assets/javascripts/shortcuts.js @@ -19,43 +19,49 @@ return _this.focusFilter(e); }; })(this)); + function gotoMenu(menu){ - if($('.global-dropdown.open').length) { - window.location.href = $('.global-dropdown-menu .dashboard-shortcuts-'+menu).attr('href'); - } + window.location.href = $('.js-dashboard-shortcuts-'+menu).attr('href'); } - Mousetrap.bind('n', function() { - $('.global-dropdown-menu').addClass('shortcuts') - $('.global-dropdown-toggle').trigger('click'); + $('.global-dropdown').on('hide.bs.dropdown', function() { + $('.global-dropdown-menu').removeClass('shortcuts'); + Mousetrap.unbind(['p', 'a', 'r', 'l', 'i', 'm', 'e']); }); - Mousetrap.bind('P', function() { - gotoMenu('projects'); - }); + $('.global-dropdown').on('show.bs.dropdown', function() { + Mousetrap.bind('p', function() { + gotoMenu('projects'); + }); - Mousetrap.bind('A', function() { - gotoMenu('activity'); - }); + Mousetrap.bind('a', function() { + gotoMenu('activity'); + }); - Mousetrap.bind('G', function() { - gotoMenu('groups'); - }); + Mousetrap.bind('r', function() { + gotoMenu('groups'); + }); - Mousetrap.bind('L', function() { - gotoMenu('milestones'); - }); + Mousetrap.bind('l', function() { + gotoMenu('milestones'); + }); - Mousetrap.bind('I', function() { - gotoMenu('issues'); - }); + Mousetrap.bind('i', function() { + gotoMenu('issues'); + }); - Mousetrap.bind('M', function() { - gotoMenu('merge_requests'); + Mousetrap.bind('m', function() { + gotoMenu('merge_requests'); + }); + + Mousetrap.bind('e', function() { + gotoMenu('snippets'); + }); }); - Mousetrap.bind('S', function() { - gotoMenu('snippets'); + Mousetrap.bind('n', function() { + $('.global-dropdown-menu').addClass('shortcuts'); + $('.global-dropdown-toggle').trigger('click'); }); Mousetrap.bind(['ctrl+shift+p', 'command+shift+p'], this.toggleMarkdownPreview); diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml index cc2d70aa55b..6cfbbec8c46 100644 --- a/app/views/layouts/nav/_dashboard.html.haml +++ b/app/views/layouts/nav/_dashboard.html.haml @@ -1,14 +1,14 @@ %ul = nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'dashboard/projects#index'], html_options: {class: "#{project_tab_class} home"}) do - = link_to dashboard_projects_path, title: 'Projects', class: 'dashboard-shortcuts-projects' do + = link_to dashboard_projects_path, title: 'Projects', class: 'js-dashboard-shortcuts-projects' do .kbd - P + p %span Projects = nav_link(path: 'dashboard#activity') do - = link_to activity_dashboard_path, class: 'dashboard-shortcuts-activity', title: 'Activity' do + = link_to activity_dashboard_path, class: 'js-dashboard-shortcuts-activity', title: 'Activity' do .kbd - A + a %span Activity - if koding_enabled? @@ -17,35 +17,35 @@ %span Koding = nav_link(controller: [:groups, 'groups/milestones', 'groups/group_members']) do - = link_to dashboard_groups_path, class: 'dashboard-shortcuts-groups', title: 'Groups' do + = link_to dashboard_groups_path, class: 'js-dashboard-shortcuts-groups', title: 'Groups' do .kbd - G + r %span Groups = nav_link(controller: 'dashboard/milestones') do - = link_to dashboard_milestones_path, class: 'dashboard-shortcuts-milestones', title: 'Milestones' do + = link_to dashboard_milestones_path, class: 'js-dashboard-shortcuts-milestones', title: 'Milestones' do .kbd - L + l %span Milestones = nav_link(path: 'dashboard#issues') do - = link_to assigned_issues_dashboard_path, title: 'Issues', class: 'dashboard-shortcuts-issues' do + = link_to assigned_issues_dashboard_path, title: 'Issues', class: 'js-dashboard-shortcuts-issues' do .kbd - I + i %span Issues .badge= number_with_delimiter(cached_assigned_issuables_count(current_user, :issues, :opened)) = nav_link(path: 'dashboard#merge_requests') do - = link_to assigned_mrs_dashboard_path, title: 'Merge Requests', class: 'dashboard-shortcuts-merge_requests' do + = link_to assigned_mrs_dashboard_path, title: 'Merge Requests', class: 'js-dashboard-shortcuts-merge_requests' do .kbd - M + m %span Merge Requests .badge= number_with_delimiter(cached_assigned_issuables_count(current_user, :merge_requests, :opened)) = nav_link(controller: 'dashboard/snippets') do - = link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets', title: 'Snippets' do + = link_to dashboard_snippets_path, class: 'js-dashboard-shortcuts-snippets', title: 'Snippets' do .kbd - S + e %span Snippets %li.divider -- GitLab