File size: 4,339 Bytes
41e1749 18fcb1a 41e1749 18fcb1a 41e1749 | 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | // Document management — UI wiring and initialization
function initDocuments() {
const importBtn = document.getElementById('doc-import-btn');
const importInput = document.getElementById('doc-import-input');
const exportTrigger = document.getElementById('doc-export-trigger');
const exportMenu = document.getElementById('doc-export-menu');
const mobileExportTrigger = document.getElementById('doc-mobile-export-trigger');
const exportSheet = document.getElementById('doc-export-sheet');
if (importBtn && importInput) {
importBtn.addEventListener('click', () => importInput.click());
importInput.addEventListener('change', (e) => {
const file = e.target.files && e.target.files[0];
if (file) handleImportFile(file);
importInput.value = '';
});
}
if (exportTrigger && exportMenu) {
exportTrigger.addEventListener('click', (e) => {
e.stopPropagation();
const open = exportMenu.classList.toggle('is-open');
exportTrigger.setAttribute('aria-expanded', open ? 'true' : 'false');
});
exportMenu.querySelectorAll('[data-export-format]').forEach((item) => {
item.addEventListener('click', (e) => {
e.stopPropagation();
const format = item.dataset.exportFormat;
closeExportMenu();
if (format === 'txt') exportTxtFile();
else if (format === 'docx') exportDocxFile();
else if (format === 'pdf') exportPdfFile();
});
});
}
// Summary export dropdown
const summExportTrigger = document.getElementById('summary-export-trigger');
const summExportMenu = document.getElementById('summary-export-menu');
if (summExportTrigger && summExportMenu) {
summExportTrigger.addEventListener('click', (e) => {
e.stopPropagation();
const open = summExportMenu.classList.toggle('is-open');
summExportTrigger.setAttribute('aria-expanded', open ? 'true' : 'false');
});
}
if (mobileExportTrigger && exportSheet) {
mobileExportTrigger.addEventListener('click', () => {
exportSheet.classList.add('open');
exportSheet.setAttribute('aria-hidden', 'false');
mobileExportTrigger.setAttribute('aria-expanded', 'true');
});
const backdrop = document.getElementById('doc-export-sheet-backdrop');
const closeBtn = document.getElementById('doc-export-sheet-close');
const close = () => {
exportSheet.classList.remove('open');
exportSheet.setAttribute('aria-hidden', 'true');
mobileExportTrigger.setAttribute('aria-expanded', 'false');
};
if (backdrop) backdrop.addEventListener('click', close);
if (closeBtn) closeBtn.addEventListener('click', close);
exportSheet.querySelectorAll('[data-export-format]').forEach((item) => {
item.addEventListener('click', () => {
const format = item.dataset.exportFormat;
close();
if (format === 'txt') exportTxtFile();
else if (format === 'docx') exportDocxFile();
else if (format === 'pdf') exportPdfFile();
});
});
}
document.addEventListener('click', () => closeExportMenu());
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
closeExportMenu();
const sheet = document.getElementById('doc-export-sheet');
if (sheet && sheet.classList.contains('open')) {
sheet.classList.remove('open');
sheet.setAttribute('aria-hidden', 'true');
const mobileTrigger = document.getElementById('doc-mobile-export-trigger');
if (mobileTrigger) mobileTrigger.setAttribute('aria-expanded', 'false');
}
}
});
const editor = getEditorElement();
if (editor) {
editor.addEventListener('input', () => {
updateExportButtonStates();
});
}
updateExportButtonStates();
}
function closeExportMenu() {
const menu = document.getElementById('doc-export-menu');
const trigger = document.getElementById('doc-export-trigger');
if (menu) menu.classList.remove('is-open');
if (trigger) trigger.setAttribute('aria-expanded', 'false');
// Also close summary export menu
const summMenu = document.getElementById('summary-export-menu');
const summTrigger = document.getElementById('summary-export-trigger');
if (summMenu) summMenu.classList.remove('is-open');
if (summTrigger) summTrigger.setAttribute('aria-expanded', 'false');
}
|