/*jshint esversion: 6 */ (function($) { $.fn.autocompleteEmail = function(options) { var settings = $.extend({ domains: [ "gmail.com", "hotmail.com", "yahoo.com", "outlook.com", "uol.com.br", "live.com", "googlemail.com" ], list_class: "list_domains" }, options ); var directional_keys = ["ArrowUp", "ArrowRight", "ArrowDown", "ArrowLeft"], selected_node = null; function getSuggestions(str) { var str_arr = str.split("@"); if (str_arr.length > 1) { str = str_arr.pop(); if (!str.length) { return ""; } } else { return ""; } var matches = settings.domains.filter(function (domain) { return domain.indexOf(str) === 0; }); return matches; } function rebuildDatalist(items, inputted_domain) { var new_list = settings.domains.filter(d => items.includes(d)); if(new_list.length == 0) { if(!inputted_domain) { new_list = settings.domains; } else { new_list = []; } } var list = $("." + settings.list_class).find(".list"); list.empty(); new_list.forEach(domain => { var item = $("
  • "); item.addClass("domain-item"); item.text("@" + domain); item.attr("data-domain", domain); list.append(item); }); return new_list; } function highlight(value) { var list = $("." + settings.list_class).find(".list"); $(list).find("li").each(function(i, li) { var domain = $(li).text(), current_domain = "@" + value.split("@")[1], index = domain.indexOf(current_domain); if(index >= 0) { var text = domain.substr(0, index) + "" + domain.substr(index, index + current_domain.length) + "" + domain.substr(index + current_domain.length); $(li).html(text); } }); } return this.each(function(i, el) { // Build list positioned on input var wrapper = $("
    "); wrapper.addClass(settings.list_class).addClass("datalist_domains"); var list = $("