let formInputs = {};
const OpenMenu = (data) => {
if (data == null || data == "") {
console.log("No data detected");
return null;
}
$(`.main-wrapper`).fadeIn(0);
let form = ["
");
$(".main-wrapper").html(form.join(" "));
$("#qb-input-form").on("change", function (event) {
if ($(event.target).attr("type") == "checkbox") {
const value = $(event.target).is(":checked") ? "true" : "false";
formInputs[$(event.target).attr("value")] = value;
} else {
formInputs[$(event.target).attr("name")] = $(event.target).val();
}
});
$("#qb-input-form").on("submit", async function (event) {
if (event != null) {
event.preventDefault();
}
await $.post(`https://${GetParentResourceName()}/buttonSubmit`, JSON.stringify({ data: formInputs }));
CloseMenu();
});
};
const renderTextInput = (item) => {
const { text, name } = item;
formInputs[name] = item.default ? item.default : "";
const isRequired = item.isRequired == "true" || item.isRequired ? "required" : "";
const defaultValue = item.default ? `value="${item.default}"` : "";
return ` `;
};
const renderPasswordInput = (item) => {
const { text, name } = item;
formInputs[name] = item.default ? item.default : "";
const isRequired = item.isRequired == "true" || item.isRequired ? "required" : "";
const defaultValue = item.default ? `value="${item.default}"` : "";
return ` `;
};
const renderNumberInput = (item) => {
try {
const { text, name } = item;
formInputs[name] = item.default ? item.default : "";
const isRequired = item.isRequired == "true" || item.isRequired ? "required" : "";
const defaultValue = item.default ? `value="${item.default}"` : "";
return ` `;
} catch (err) {
console.log(err);
return "";
}
};
const renderRadioInput = (item) => {
const { options, name, text } = item;
formInputs[name] = options[0].value;
let div = `";
return div;
};
const renderCheckboxInput = (item) => {
const { options, name, text } = item;
let div = `";
return div;
};
const renderSelectInput = (item) => {
const { options, name, text } = item;
let div = `${text}
`;
div += ``;
formInputs[name] = options[0].value;
options.forEach((option, index) => {
const isDefaultValue = item.default == option.value;
div += `${option.text} `;
if (isDefaultValue) {
formInputs[name] = option.value;
}
});
div += " ";
return div;
};
const renderColorInput = (item) => {
const { text, name } = item;
formInputs[name] = item.default ? item.default : "#ffffff";
const isRequired = item.isRequired == "true" || item.isRequired ? "required" : "";
const defaultValue = item.default ? `value="${item.default}"` : "";
return ` `;
};
const CloseMenu = () => {
$(`.main-wrapper`).fadeOut(0);
$("#qb-input-form").remove();
formInputs = {};
};
const SetStyle = (style) => {
var stylesheet = $(" ", {
rel: "stylesheet",
type: "text/css",
href: `./styles/${style}.css`,
});
stylesheet.appendTo("head");
};
const CancelMenu = () => {
$.post(`https://${GetParentResourceName()}/closeMenu`);
return CloseMenu();
};
window.addEventListener("message", (event) => {
const data = event.data;
const info = data.data;
const action = data.action;
switch (action) {
case "SET_STYLE":
return SetStyle(info);
case "OPEN_MENU":
return OpenMenu(info);
case "CLOSE_MENU":
return CloseMenu();
default:
return;
}
});
document.onkeyup = function (event) {
const charCode = event.key;
if (charCode == "Escape") {
CancelMenu();
} else if (charCode == "Enter") {
SubmitData();
}
};
// IDK why this is a thing ? what if they misclick?
$(document).click(function (event) {
var $target = $(event.target);
if (!$target.closest(".main-wrapper").length && $(".main-wrapper").is(":visible")) {
CancelMenu();
}
});