Files
michaelschiemer/resources/js/main.js
Michael Schiemer 5050c7d73a docs: consolidate documentation into organized structure
- Move 12 markdown files from root to docs/ subdirectories
- Organize documentation by category:
  • docs/troubleshooting/ (1 file)  - Technical troubleshooting guides
  • docs/deployment/      (4 files) - Deployment and security documentation
  • docs/guides/          (3 files) - Feature-specific guides
  • docs/planning/        (4 files) - Planning and improvement proposals

Root directory cleanup:
- Reduced from 16 to 4 markdown files in root
- Only essential project files remain:
  • CLAUDE.md (AI instructions)
  • README.md (Main project readme)
  • CLEANUP_PLAN.md (Current cleanup plan)
  • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements)

This improves:
 Documentation discoverability
 Logical organization by purpose
 Clean root directory
 Better maintainability
2025-10-05 11:05:04 +02:00

65 lines
2.3 KiB
JavaScript

import '../css/styles.css';
import { initApp } from './core/init.js';
import { Logger } from './core/logger.js';
import { CsrfAutoRefresh } from './modules/csrf-auto-refresh.js';
import { FormAutoSave } from './modules/form-autosave.js';
// Import Hot Reload in development
if (import.meta.env.DEV) {
import('./modules/hot-reload.js').then(({ HotReload }) => {
console.log('🔥 Hot Reload module loaded');
});
}
// PWA Service Worker temporarily disabled
// TODO: Re-enable after fixing build issues
document.addEventListener("DOMContentLoaded", async () => {
try {
console.log('🚀 Starting app initialization...');
await initApp();
console.log('✅ App initialized successfully!');
// Initialize CSRF Auto-Refresh for all forms
const csrfInstances = CsrfAutoRefresh.initializeAll();
console.log(`🔒 CSRF Auto-Refresh initialized for ${csrfInstances.length} forms`);
// Initialize Form Auto-Save for all forms
const autosaveInstances = FormAutoSave.initializeAll();
console.log(`💾 Form Auto-Save initialized for ${autosaveInstances.length} forms`);
// Debug info
setTimeout(() => {
console.log('📊 Debug Info:');
console.log('- Forms found:', document.querySelectorAll('form').length);
console.log('- Links found:', document.querySelectorAll('a[href^="/"]').length);
console.log('- SPA Router:', window.spaRouter ? 'Active' : 'Missing');
console.log('- Enhanced forms:', document.querySelectorAll('form[data-auto-enhanced]').length);
console.log('- CSRF protected forms:', document.querySelectorAll('input[name="_token"]').length);
}, 500);
} catch (error) {
console.error('❌ App initialization failed:', error);
console.error('Stack trace:', error.stack);
}
});
function isHtmlAttributeSupported(elementName, attribute) {
const element = document.createElement(elementName);
return attribute in element;
}
/*let closedAttr = document.getElementById('my-dialog');
if(closedAttr && !('closedby' in closedAttr)) {
alert('oh no');
}*/
/*
if (isHtmlAttributeSupported('dialog', 'closedby')) {
alert('Attribut wird unterstützt!');
} else {
alert('Nicht unterstützt!');
}
*/