aboutsummaryrefslogtreecommitdiff
path: root/static/js/alert.js
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-03-08 05:43:04 +0530
committerBobby <[email protected]>2026-03-08 05:43:04 +0530
commit662dd2069dc8590e8b54823a33726464cf10c4e7 (patch)
tree55a740e6114440d7e311afd3f5ba79a7101965f8 /static/js/alert.js
parentd21ea918864a8b18fef94bbfaec8097444be1b17 (diff)
downloaddove-662dd2069dc8590e8b54823a33726464cf10c4e7.tar.xz
dove-662dd2069dc8590e8b54823a33726464cf10c4e7.zip
feat(domains): enhance TLD and domain management with edit and delete functionality
- Added edit and delete buttons for TLDs in the TLD management interface. - Implemented a modal confirmation for delete actions across TLDs, mailboxes, users, and aliases. - Created separate edit pages for domains and TLDs with forms for updating their details. - Improved user experience by adding alerts for error messages and success notifications. feat(mail): streamline mailbox management with alias support - Introduced alias creation and deletion functionality for mailboxes. - Enhanced mailbox edit interface to include alias management. - Added dropdowns for selecting users and domains when creating aliases. fix(alerts): implement alert system for error messages - Developed a reusable alert component to display error messages. - Integrated alert dismiss functionality with automatic timeout for user notifications. refactor: general code improvements and organization - Updated error handling in the backend to support HTMX requests. - Refactored redirect functions to handle HTMX redirects appropriately.
Diffstat (limited to 'static/js/alert.js')
-rw-r--r--static/js/alert.js28
1 files changed, 28 insertions, 0 deletions
diff --git a/static/js/alert.js b/static/js/alert.js
new file mode 100644
index 0000000..4f9fc21
--- /dev/null
+++ b/static/js/alert.js
@@ -0,0 +1,28 @@
+function initAlerts() {
+ document.querySelectorAll("[data-alert]").forEach(function (alert) {
+ if (alert.dataset.alertInitialized) return;
+ alert.dataset.alertInitialized = "true";
+
+ var dismissButton = alert.querySelector("[data-alert-dismiss]");
+ var autoTimeout = setTimeout(function () {
+ dismissAlert(alert);
+ }, 5000);
+
+ if (dismissButton) {
+ dismissButton.addEventListener("click", function () {
+ clearTimeout(autoTimeout);
+ dismissAlert(alert);
+ });
+ }
+ });
+}
+
+function dismissAlert(alert) {
+ alert.classList.add("dismissing");
+ alert.addEventListener("animationend", function () {
+ alert.remove();
+ });
+}
+
+document.addEventListener("DOMContentLoaded", initAlerts);
+document.body.addEventListener("htmx:afterSwap", initAlerts);