let buttonParams = []; let images = []; const openMenu = (data = null) => { let html = ""; data.forEach((item, index) => { if(!item.hidden) { let header = item.header; let message = item.txt || item.text; let isMenuHeader = item.isMenuHeader; let isDisabled = item.disabled; let icon = item.icon; images[index] = item; html += getButtonRender(header, message, index, isMenuHeader, isDisabled, icon); if (item.params) buttonParams[index] = item.params; } }); $("#buttons").html(html); $('.button').click(function() { const target = $(this) if (!target.hasClass('title') && !target.hasClass('disabled')) { postData(target.attr('id')); } }); }; const getButtonRender = (header, message = null, id, isMenuHeader, isDisabled, icon) => { return `
${header}
${message ? `
${message}
` : ""}
`; }; const closeMenu = () => { $("#buttons").html(" "); $('#imageHover').css('display' , 'none'); buttonParams = []; images = []; }; const postData = (id) => { $.post(`https://${GetParentResourceName()}/clickedButton`, JSON.stringify(parseInt(id) + 1)); return closeMenu(); }; const cancelMenu = () => { $.post(`https://${GetParentResourceName()}/closeMenu`); return closeMenu(); }; window.addEventListener("message", (event) => { const data = event.data; const buttons = data.data; const action = data.action; switch (action) { case "OPEN_MENU": case "SHOW_HEADER": return openMenu(buttons); case "CLOSE_MENU": return closeMenu(); default: return; } }); window.addEventListener('mousemove', (event) => { let $target = $(event.target); if ($target.closest('.button:hover').length && $('.button').is(":visible")) { let id = event.target.id; if (!images[id]) return if (images[id].image) { $('#image').attr('src', images[id].image); $('#imageHover').css('display' , 'block'); } } else { $('#imageHover').css('display' , 'none'); } }) document.onkeyup = function (event) { const charCode = event.key; if (charCode == "Escape") { cancelMenu(); } };