ifthenelse-8.x-1.x-dev-no-core/modules/contrib/admin_toolbar/js/admin_toolbar_search.js
modules/contrib/admin_toolbar/js/admin_toolbar_search.js
(function ($, Drupal) { Drupal.behaviors.adminToolbarSearch = { attach: function (context) { if (context != document) { return; } var getUrl = window.location; var baseUrl = getUrl.protocol + "//" + getUrl.host + "/"; var $self = this; this.links = []; $('a[data-drupal-link-system-path]').each(function() { if (this.href != baseUrl) { var label = $self.getItemLabel(this); $self.links.push({ 'value': $(this).attr('href'), 'label': label + ' ' + $(this).attr('href'), 'labelRaw': label }); } }); $( "#admin-toolbar-search-input").autocomplete({ minLength: 2, source: function(request, response) { var data = $self.handleAutocomplete(request.term); response(data); }, open: function(){ var zIndex = $('#toolbar-item-administration-search-tray').css("z-index")+1; $(this).autocomplete('widget').css('z-index', zIndex); return false; }, select: function( event, ui ) { if (ui.item.value) { location.href = ui.item.value; return false; } } }).data("ui-autocomplete")._renderItem = (function(ul, item) { return $("<li>") .append('<div>' + item.labelRaw + ' <span class="admin-toolbar-search-url">' + item.value + '</span></div>') .appendTo(ul); }); // Focus on search field when tab is clicked, or enter is pressed. $(context).find('#toolbar-item-administration-search').once('admin_toolbar_search').each(function () { if ($('#toolbar-item-administration-search-tray:visible').length) { $('#admin-toolbar-search-input').focus(); } $(this).on('click', function() { $self.focusOnSearchElement(); }); }); }, focusOnSearchElement: function() { var waitforVisible = function() { if ($('#toolbar-item-administration-search-tray:visible').length) { $('#admin-toolbar-search-input').focus(); } else { setTimeout(function() { waitforVisible(); }, 1); } }; waitforVisible(); }, getItemLabel: function(item) { var breadcrumbs = []; $(item).parents().each(function() { if ($(this).hasClass('menu-item')) { var $link = $(this).find('a:first'); if ($link.length && !$link.hasClass('admin-toolbar-search-ignore')) { breadcrumbs.unshift($link.text()); } } }); label = breadcrumbs.join(' > '); return label; }, handleAutocomplete: function(term) { var $self = this; var keywords = term.split(" "); // split search terms into list. var suggestions = []; $self.links.forEach(function(element) { var label = element.label.toLowerCase(); // Add exact matches. if (label.indexOf(term.toLowerCase()) >= 0) { suggestions.push(element); } else { // Add suggestions where it matches all search terms. var matchCount = 0; keywords.forEach(function(keyword) { if (label.indexOf(keyword.toLowerCase()) >= 0) { matchCount++; } }); if (matchCount == keywords.length) { suggestions.push(element); } } }); return suggestions; } }; })(jQuery, Drupal);