File size: 1,801 Bytes
6aae67a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
/** @format */
const DialogManager = {
createDialog(type, message) {
const dialog = document.createElement("div");
const overlay = document.createElement("div");
// .confirm-dialog,
// .alert-dialog
dialog.className = `${type}-dialog`;
dialog.classList.add("inv");
overlay.className = "overlay";
dialog.innerHTML = `
<h4>${message}</h4>
<div class="buttons inv">
<button class="ok inv">OK</button>
${type === "confirm" ? '<button class="cancel inv">Annulla</button>' : ""}
</div>
`;
[dialog, overlay].forEach((el) => {
el.classList.add("show");
document.body.appendChild(el);
});
return { dialog, overlay };
},
closeDialog(dialog, overlay) {
[dialog, overlay].forEach((el) => {
el.classList.remove("show");
setTimeout(() => el.remove(), 300);
});
},
showDialog(type, message) {
return new Promise((resolve) => {
const { dialog, overlay } = this.createDialog(type, message);
dialog.querySelector(".ok").onclick = () => {
this.closeDialog(dialog, overlay);
resolve(type === "confirm");
};
if (type === "confirm") {
dialog.querySelector(".cancel").onclick = () => {
this.closeDialog(dialog, overlay);
resolve(false);
};
}
});
},
};
// Salviamo i riferimenti alle funzioni native
const nativeAlert = window.alert;
const nativeConfirm = window.confirm;
// Sovrascriviamo alert
window.alert = function (message) {
if (message instanceof Error) {
message = message.message;
}
return DialogManager.showDialog("alert", message);
};
// Sovrascriviamo confirm
window.confirm = function (message) {
return DialogManager.showDialog("confirm", message);
};
|