// pro suggest functionality (function() { let suggestionsOuter = null; const debounce = (func, wait) => { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }; var lastTerm = ''; var returnedFunction = debounce(function (elem) { var term = elem.val(); if (!!term && lastTerm !== term) { $.get('/pro-suggest?term=' + $.trim(term) + '&type=' + elem.attr('provider-type'), function (_data) { suggestionsOuter.html(_data).removeClass('d-none'); }); lastTerm = term; } else { suggestionsOuter.addClass('d-none'); } }, 250); function handleKeydown(elem, e) { let term = $.trim(elem.val()); let activeItem = suggestionsOuter.find('.suggest-item.active'); switch (e.which) { case 27: suggestionsOuter.addClass('d-none'); markEventAsConsumed(e); return false; case 38: if (activeItem.prev().length) { activeItem.prev() .addClass('active') .siblings().removeClass('active'); activeItem = suggestionsOuter.find('.suggest-item.active'); if (activeItem.length) { activeItem[0].scrollIntoView(); } } return false; case 40: if (activeItem.next().length) { activeItem.next() .addClass('active') .siblings().removeClass('active'); activeItem = suggestionsOuter.find('.suggest-item.active'); if (activeItem.length) { activeItem[0].scrollIntoView(); } } return false; case 13: if (activeItem.length) { activeItem.first().click(); } return false; default: if (!!term) { suggestionsOuter .html('Searching...') .removeClass('d-none'); returnedFunction(elem); } else { suggestionsOuter.addClass('d-none'); } break; } } function handleKeypress(elem, e) { var term = $.trim(elem.val()); if (!!term) { suggestionsOuter .html('Searching...') .removeClass('d-none'); returnedFunction(elem); } else { suggestionsOuter.addClass('d-none'); } } window.initProSuggest = function() { // make select[provider-search] hidden & insert a textbox with pro-suggest $('select[provider-search]:not([pro-suggest-initialized]):not([no-auto-pro-suggest-init])').each(function() { let elem = $(this); elem.next('.pro-suggest-input').remove(); elem.next('.pro-suggestions-container').remove(); let input = $('').addClass('pro-suggest-input form-control form-control-sm').insertAfter(elem); input.attr('provider-type', elem.attr('provider-type')); $('
' + '
' + '
').insertAfter(input); elem.hide(); if (!!elem.attr('data-pro-uid')) { if (!!localStorage["proDisplayNameCache_" + elem.attr('data-pro-uid')]) { let name = localStorage["proDisplayNameCache_" + elem.attr('data-pro-uid')]; input.val(name).data('original', name); elem.empty().append($('