`;
return card;
}
// --- EVENT LISTENERS ---
// Tab navigation
if (tabsContainer) {
tabsContainer.addEventListener('click', (event) => {
if (event.target.matches('.tab-btn')) {
const tabIndex = parseInt(event.target.dataset.tabIndex);
document.querySelectorAll('.tab-btn').forEach((btn, i) => {
btn.classList.toggle('active', i === tabIndex);
btn.classList.toggle('inactive', i !== tabIndex);
});
tabContents.forEach((content, i) => {
content.classList.toggle('active', i === tabIndex);
});
}
});
}
// Feedback form submission
if (feedbackForm) {
feedbackForm.addEventListener('submit', async (e) => {
e.preventDefault();
if (!currentUserId) {
alert("Not authenticated. Please wait or refresh.");
return;
}
const submitBtn = document.getElementById('submit-btn');
submitBtn.disabled = true;
submitBtn.textContent = 'Submitting...';
const formData = new FormData(feedbackForm);
const isAnonymous = document.getElementById('anonymous-checkbox').checked;
const feedbackData = {
to: formData.get('feedback-to'),
category: document.getElementById('feedback-category').value,
rating: parseInt(formData.get('rating')),
message: document.getElementById('feedback-message').value,
from: isAnonymous ? 'Anonymous' : currentUserId,
timestamp: serverTimestamp()
};
try {
await addDoc(collection(db, `artifacts/${appId}/public/data/feedback`), feedbackData);
// Show success message and reset form
const successMsg = document.getElementById('submit-success-message');
if (successMsg) {
successMsg.classList.remove('hidden');
setTimeout(() => successMsg.classList.add('hidden'), 4000);
}
feedbackForm.reset();
} catch (error) {
console.error("Error submitting feedback:", error);
alert("Failed to submit feedback. Please try again.");
} finally {
submitBtn.disabled = false;
submitBtn.textContent = 'Submit Feedback';
}
});
}
// Filter change listener
if(filterCategory) {
filterCategory.addEventListener('change', renderFeedback);
}
// --- INITIALIZATION ---
initializeAuth();
});
