botui/ui/suite/mail/mail.js
Rodrigo Rodriguez (Pragmatismo) 1f95ac7a15 refactor: Extract inline CSS/JS to separate files for monitoring module
- Create individual CSS files: monitoring.css, alerts.css, health.css, logs.css, metrics.css, resources.css
- Create individual JS files: monitoring.js, alerts.js, health.js, logs.js, metrics.js, resources.js
- Update HTML files to reference external CSS/JS files
- Add CSS/JS files for other modules (analytics, chat, mail, meet, tasks, etc.)
- Remove obsolete implementation plan files
2025-12-07 09:56:27 -03:00

173 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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 = `
<span>${file.name}</span>
<button type="button" onclick="this.parentElement.remove()">×</button>
`;
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);
});
});