/** * Mail Module JavaScript * Email client functionality including compose, selection, and modals */ // Compose Modal Functions function openCompose(replyTo = null, forward = null) { const modal = document.getElementById('composeModal'); if (modal) { modal.classList.remove('hidden'); modal.classList.remove('minimized'); if (replyTo) { document.getElementById('composeTo').value = replyTo; } } } function closeCompose() { const modal = document.getElementById('composeModal'); if (modal) { modal.classList.add('hidden'); // Clear form document.getElementById('composeTo').value = ''; document.getElementById('composeCc').value = ''; document.getElementById('composeBcc').value = ''; document.getElementById('composeSubject').value = ''; document.getElementById('composeBody').value = ''; } } function minimizeCompose() { const modal = document.getElementById('composeModal'); if (modal) { modal.classList.toggle('minimized'); } } function toggleCcBcc() { const ccBcc = document.getElementById('ccBccFields'); if (ccBcc) { ccBcc.classList.toggle('hidden'); } } // Schedule Functions function toggleScheduleMenu() { const menu = document.getElementById('scheduleMenu'); if (menu) { menu.classList.toggle('hidden'); } } function scheduleSend(when) { console.log('Scheduling send for:', when); toggleScheduleMenu(); } // Selection Functions function toggleSelectAll() { const selectAll = document.getElementById('selectAll'); const checkboxes = document.querySelectorAll('.email-checkbox'); checkboxes.forEach(cb => cb.checked = selectAll.checked); updateBulkActions(); } function updateBulkActions() { const checked = document.querySelectorAll('.email-checkbox:checked'); const bulkActions = document.getElementById('bulkActions'); if (bulkActions) { bulkActions.style.display = checked.length > 0 ? 'flex' : 'none'; } } // Modal Functions function openTemplatesModal() { const modal = document.getElementById('templatesModal'); if (modal) modal.classList.remove('hidden'); } function closeTemplatesModal() { const modal = document.getElementById('templatesModal'); if (modal) modal.classList.add('hidden'); } function openSignaturesModal() { const modal = document.getElementById('signaturesModal'); if (modal) modal.classList.remove('hidden'); } function closeSignaturesModal() { const modal = document.getElementById('signaturesModal'); if (modal) modal.classList.add('hidden'); } function openRulesModal() { const modal = document.getElementById('rulesModal'); if (modal) modal.classList.remove('hidden'); } function closeRulesModal() { const modal = document.getElementById('rulesModal'); if (modal) modal.classList.add('hidden'); } function useTemplate(name) { console.log('Using template:', name); closeTemplatesModal(); } function useSignature(name) { console.log('Using signature:', name); closeSignaturesModal(); } // Bulk Actions function archiveSelected() { const checked = document.querySelectorAll('.email-checkbox:checked'); console.log('Archiving', checked.length, 'emails'); } function deleteSelected() { const checked = document.querySelectorAll('.email-checkbox:checked'); if (confirm(`Delete ${checked.length} email(s)?`)) { console.log('Deleting', checked.length, 'emails'); } } function markSelectedRead() { const checked = document.querySelectorAll('.email-checkbox:checked'); console.log('Marking', checked.length, 'emails as read'); } // File Attachment function handleAttachment(input) { const files = input.files; const attachmentList = document.getElementById('attachmentList'); if (attachmentList && files.length > 0) { for (const file of files) { const item = document.createElement('div'); item.className = 'attachment-item'; item.innerHTML = ` ${file.name} `; attachmentList.appendChild(item); } } } // Keyboard Shortcuts document.addEventListener('keydown', function(e) { // Escape closes modals if (e.key === 'Escape') { closeCompose(); closeTemplatesModal(); closeSignaturesModal(); closeRulesModal(); } // Ctrl+N for new email if (e.ctrlKey && e.key === 'n') { e.preventDefault(); openCompose(); } }); // Initialize document.addEventListener('DOMContentLoaded', function() { // Add change listeners to checkboxes document.querySelectorAll('.email-checkbox').forEach(cb => { cb.addEventListener('change', updateBulkActions); }); });