async function itemsDialog() { let div = $(` `) const placeholderDiv = div.find(".items-list .text-warning"); // delete the div when the modal is closed div.on("hidden.bs.modal", function() { div.remove(); }); div.modal("show"); div.find(".item-search").val("").on("keyup", function() { const rawVal = $(this).val(); const lowercaseText = rawVal.toLowerCase(); if (rawVal) { placeholderDiv.text(rawVal).data("itemName", rawVal).show(); } else { placeholderDiv.hide(); } div.find(".items-list li").not(placeholderDiv).filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(lowercaseText) > -1); }); }); const items = await $.post(`https://${resName}/getAllItems`) let itemsListDiv = div.find(".items-list"); for(const[itemName, itemData] of Object.entries(items)) { let itemDiv = $(`
  • ${itemData.label}
  • `); itemsListDiv.prepend(itemDiv); } return new Promise((resolve) => { div.find(".list-group-item").click(function() { let itemName = $(this).data("itemName"); div.modal("hide"); resolve(itemName); }); div.find(".item-search").keydown(function(e) { if (e.keyCode != 13) return; let searchContent = $(this).val(); div.modal("hide"); resolve(searchContent); }); }); }