elasticsearch_search_api-1.0.x-dev/js/search-inline-autocomplete.js
js/search-inline-autocomplete.js
(function ($, Drupal, drupalSettings, once) { 'use strict'; Drupal.behaviors.searchInlineBehavior = { attach: function (context, settings) { var header_form_class = drupalSettings.elasticsearch_search_api.header_form_class; var searchForm = $('.' + header_form_class); $(once('elasticsearch_search_api-autocomplete', '.search-autocomplete-inline')).on('click', '.autocomplete-keyword', function () { searchForm.find('input[name=keyword]').val($(this).attr('data-keyword')); searchForm.submit(); }); $(once('elasticsearch_search_api-autocomplete', searchForm)).on('submit', function () { $('.search-autocomplete-inline').removeClass('is-visible'); }); var delay = (function () { var timer = 0; return function (callback, ms) { clearTimeout(timer); timer = setTimeout(callback, ms); }; })(); let form_input = searchForm.find('input[name=keyword]'); $(once('elasticsearch_search_api-keyup', form_input)).on('keyup', function () { var q = $(this).val().trim(); if (q.length > 2) { delay(function () { var prefix = drupalSettings.langcode; var url = drupalSettings.elasticsearch_search_api.autocomplete_endpoint; if (prefix) { url = '/' + prefix + url; } $.ajax({ url: url, data: { q: q, t: 1 }, success: function (data) { $('.search-autocomplete-inline').html(data).addClass('is-visible'); } }); }, 300); } else { $('.search-autocomplete-inline').html(''); } }); $(once('elasticsearch_search_api-blur', form_input)).on('blur', function () { setTimeout(function () { $('.search-autocomplete-inline').removeClass('is-visible'); }, 200); }); } }; })(jQuery, Drupal, drupalSettings, once);