memberships: modal for confirmation (#130)
* unpolished version of working modal
* separated JS script
* minor change in JS
* minor changes JS file
diff --git a/core/auth/memberships/static/main.js b/core/auth/memberships/static/main.js
new file mode 100644
index 0000000..e4ea2ca
--- /dev/null
+++ b/core/auth/memberships/static/main.js
@@ -0,0 +1,47 @@
+const confirmationDialog = document.getElementById("confirmation");
+const cancelButton = document.getElementById("cancel-button");
+const confirmButton = document.getElementById("confirm-button");
+
+function showConfirmationDialog(form) {
+ const message = form.dataset.confirmationMessage;
+ document.getElementById("confirmation-message").innerHTML = message;
+ confirmationDialog.showModal();
+ let confirmed;
+ let p = new Promise((resolve) => {
+ confirmed = resolve;
+ });
+ confirmButton.onclick = () => {
+ confirmed(true);
+ };
+ cancelButton.onclick = () => {
+ hideConfirmationDialog();
+ confirmed(false);
+ };
+ return p;
+}
+
+function hideConfirmationDialog() {
+ confirmationDialog.close();
+}
+
+async function handleRemoveOwnerSubmit(form) {
+ event.preventDefault();
+ return await showConfirmationDialog(form);
+}
+
+document.addEventListener("DOMContentLoaded", function () {
+ const removeOwnerForms = document.querySelectorAll(".remove-form");
+ removeOwnerForms.forEach((form) => {
+ form.addEventListener("submit", async function (event) {
+ event.preventDefault();
+ try {
+ isConfirmed = await handleRemoveOwnerSubmit(form);
+ if (isConfirmed) {
+ form.submit();
+ }
+ } catch (error) {
+ console.error(error);
+ }
+ });
+ });
+});