document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.tree-toggle').forEach((toggle) => { const targetSelector = toggle.getAttribute('data-tree-target'); const target = targetSelector ? document.querySelector(targetSelector) : null; const icon = toggle.querySelector('.tree-icon'); const syncState = () => { const open = target && target.classList.contains('show'); toggle.classList.toggle('open', !!open); toggle.setAttribute('aria-expanded', open ? 'true' : 'false'); if (icon) { icon.textContent = open ? '−' : '+'; } }; syncState(); toggle.addEventListener('click', () => { if (target) { target.classList.toggle('show'); } syncState(); }); }); document.querySelectorAll('.toast').forEach((el) => { const toast = new bootstrap.Toast(el, { delay: 4500 }); toast.show(); }); const folderSelect = document.getElementById('folder_path'); const mainMenuSelect = document.getElementById('main_menu'); if (folderSelect && mainMenuSelect) { const syncMenuFromFolder = () => { const selectedOption = folderSelect.options[folderSelect.selectedIndex]; if (!selectedOption || !selectedOption.value) return; const mainMenu = selectedOption.value.split(' / ')[0]; if ([...mainMenuSelect.options].some((option) => option.value === mainMenu)) { mainMenuSelect.value = mainMenu; } }; folderSelect.addEventListener('change', syncMenuFromFolder); syncMenuFromFolder(); } document.querySelectorAll('[data-print-trigger]').forEach((button) => { button.addEventListener('click', () => window.print()); }); });