X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fcrm.menubar.js;h=eba37ed3c46d6c90b6281b3be088900ce874018a;hb=be40742b430244952b890a25371f243e558f4806;hp=9fa49f63d69a5fc0d23f4bdf21f3c9ea74eec42f;hpb=34549323dc186f2fb67e4933a26c1de946a99700;p=civicrm-core.git diff --git a/js/crm.menubar.js b/js/crm.menubar.js index 9fa49f63d6..eba37ed3c4 100644 --- a/js/crm.menubar.js +++ b/js/crm.menubar.js @@ -78,12 +78,17 @@ }) .on('show.smapi', function(e, menu) { // Focus menu when opened with an accesskey - $(menu).siblings('a[accesskey]').focus(); + if ($(menu).parent().data('name') === 'Home') { + $('#crm-menubar-drilldown').focus(); + } else { + $(menu).siblings('a[accesskey]').focus(); + } }) .smartmenus(CRM.menubar.settings); initialized = true; CRM.menubar.initializeResponsive(); CRM.menubar.initializeSearch(); + CRM.menubar.initializeDrill(); }); } }, @@ -144,6 +149,9 @@ getItem: function(itemName) { return traverse(CRM.menubar.data.menu, itemName, 'get'); }, + findItems: function(searchTerm) { + return findRecursive(CRM.menubar.data.menu, searchTerm.toLowerCase().replace(/ /g, '')); + }, addItems: function(position, targetName, items) { var list, container, $ul; if (position === 'before' || position === 'after') { @@ -376,6 +384,14 @@ return !$('ul.crm-quickSearch-results').is(':visible:not(.ui-state-disabled)'); }); }, + initializeDrill: function() { + $('#civicrm-menu').on('keyup', '#crm-menubar-drilldown', function() { + var term = $(this).val(), + results = term ? CRM.menubar.findItems(term).slice(0, 20) : []; + $(this).parent().next('ul').html(getTpl('branch')({items: results, branchTpl: getTpl('branch'), drillTpl: _.noop})); + $('#civicrm-menu').smartmenus('refresh').smartmenus('itemActivate', $(this).closest('a')); + }); + }, treeTpl: '