/* ============================================================ SURVAM — Admin JavaScript (admin.js) ============================================================ */ 'use strict'; document.addEventListener('DOMContentLoaded', () => { // ── Sidebar toggle (mobile) ─────────────────────────────── const toggle = document.getElementById('sidebarToggle'); const sidebar = document.getElementById('adminSidebar'); if (toggle && sidebar) { toggle.addEventListener('click', () => sidebar.classList.toggle('open')); // Close on outside click document.addEventListener('click', (e) => { if (sidebar.classList.contains('open') && !sidebar.contains(e.target) && e.target !== toggle) { sidebar.classList.remove('open'); } }); } // ── Confirm-delete links ────────────────────────────────── document.querySelectorAll('[data-confirm]').forEach(el => { el.addEventListener('click', (e) => { if (!confirm(el.dataset.confirm)) e.preventDefault(); }); }); // ── Auto-submit filter forms on select change ───────────── document.querySelectorAll('[data-autosubmit]').forEach(sel => { sel.addEventListener('change', () => sel.closest('form')?.submit()); }); // ── Slug auto-generate from name input ──────────────────── const nameInput = document.getElementById('planName'); const slugInput = document.getElementById('planSlug'); if (nameInput && slugInput && !slugInput.value) { nameInput.addEventListener('input', () => { slugInput.value = nameInput.value.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, ''); }); } // ── Stat card hover sparkle ─────────────────────────────── document.querySelectorAll('.admin-stat').forEach(card => { card.addEventListener('mouseenter', () => card.style.transform = 'translateY(-2px)'); card.addEventListener('mouseleave', () => card.style.transform = ''); }); // ── Flash auto-dismiss ──────────────────────────────────── document.querySelectorAll('.flash').forEach(f => { setTimeout(() => { f.style.transition = 'opacity 0.5s'; f.style.opacity = '0'; setTimeout(() => f.remove(), 500); }, 4500); }); }); // ── Admin user dropdown ─────────────────────────────────── const adminUserBtn = document.getElementById('adminUserMenuBtn'); const adminUserDropdown = document.getElementById('adminUserDropdown'); if (adminUserBtn && adminUserDropdown) { adminUserBtn.addEventListener('click', (e) => { e.stopPropagation(); adminUserDropdown.classList.toggle('open'); }); document.addEventListener('click', () => adminUserDropdown.classList.remove('open')); }