File size: 1,986 Bytes
0fd8c45 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
// Shared JavaScript across all pages
document.addEventListener('DOMContentLoaded', () => {
// Initialize tooltips for feather icons
document.querySelectorAll('[data-feather]').forEach(icon => {
const tooltipText = icon.parentElement.getAttribute('data-tooltip');
if (tooltipText) {
icon.setAttribute('title', tooltipText);
}
});
});
// File upload handling
function handleFileUpload(event) {
const files = event.target.files;
if (files.length > 0) {
console.log('Files selected:', files);
// TODO: Implement file processing logic
}
}
// Drag and drop functionality
function setupDragAndDrop() {
const dropArea = document.getElementById('drop-area');
if (dropArea) {
['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false);
});
function preventDefaults(e) {
e.preventDefault();
e.stopPropagation();
}
['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false);
});
['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false);
});
function highlight() {
dropArea.classList.add('border-indigo-400', 'bg-indigo-900', 'bg-opacity-20');
}
function unhighlight() {
dropArea.classList.remove('border-indigo-400', 'bg-indigo-900', 'bg-opacity-20');
}
dropArea.addEventListener('drop', handleDrop, false);
function handleDrop(e) {
const dt = e.dataTransfer;
const files = dt.files;
console.log('Files dropped:', files);
// TODO: Implement file processing logic
}
}
}
// Initialize drag and drop when DOM is loaded
document.addEventListener('DOMContentLoaded', setupDragAndDrop); |