Change d'interface plus légére, modification side barre
This commit is contained in:
@ -13,6 +13,9 @@ class FileTree {
|
||||
init() {
|
||||
this.setupEventListeners();
|
||||
|
||||
// Restaurer l'état des dossiers au démarrage
|
||||
setTimeout(() => this.restoreFolderStates(), 500);
|
||||
|
||||
debug('FileTree initialized with event delegation');
|
||||
}
|
||||
|
||||
@ -67,17 +70,60 @@ class FileTree {
|
||||
const children = folderItem.querySelector('.folder-children');
|
||||
const toggle = header.querySelector('.folder-toggle');
|
||||
const icon = header.querySelector('.folder-icon');
|
||||
const folderPath = folderItem.getAttribute('data-path');
|
||||
|
||||
if (children.style.display === 'none') {
|
||||
// Ouvrir le dossier
|
||||
children.style.display = 'block';
|
||||
toggle.classList.add('expanded');
|
||||
icon.textContent = '📂';
|
||||
icon.innerHTML = '<i data-lucide="folder-open" class="icon-sm"></i>';
|
||||
this.saveFolderState(folderPath, true);
|
||||
} else {
|
||||
// Fermer le dossier
|
||||
children.style.display = 'none';
|
||||
toggle.classList.remove('expanded');
|
||||
icon.textContent = '📁';
|
||||
icon.innerHTML = '<i data-lucide="folder" class="icon-sm"></i>';
|
||||
this.saveFolderState(folderPath, false);
|
||||
}
|
||||
}
|
||||
|
||||
saveFolderState(folderPath, isExpanded) {
|
||||
if (!folderPath) return;
|
||||
const expandedFolders = this.getExpandedFolders();
|
||||
if (isExpanded) {
|
||||
expandedFolders.add(folderPath);
|
||||
} else {
|
||||
expandedFolders.delete(folderPath);
|
||||
}
|
||||
localStorage.setItem('expanded-folders', JSON.stringify([...expandedFolders]));
|
||||
}
|
||||
|
||||
getExpandedFolders() {
|
||||
const saved = localStorage.getItem('expanded-folders');
|
||||
return saved ? new Set(JSON.parse(saved)) : new Set();
|
||||
}
|
||||
|
||||
restoreFolderStates() {
|
||||
const expandedFolders = this.getExpandedFolders();
|
||||
document.querySelectorAll('.folder-item').forEach(folderItem => {
|
||||
const folderPath = folderItem.getAttribute('data-path');
|
||||
if (folderPath && expandedFolders.has(folderPath)) {
|
||||
const header = folderItem.querySelector('.folder-header');
|
||||
const children = folderItem.querySelector('.folder-children');
|
||||
const toggle = header?.querySelector('.folder-toggle');
|
||||
const icon = header?.querySelector('.folder-icon');
|
||||
|
||||
if (children && toggle && icon) {
|
||||
children.style.display = 'block';
|
||||
toggle.classList.add('expanded');
|
||||
icon.innerHTML = '<i data-lucide="folder-open" class="icon-sm"></i>';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Réinitialiser les icônes Lucide
|
||||
if (typeof lucide !== 'undefined') {
|
||||
lucide.createIcons();
|
||||
}
|
||||
}
|
||||
|
||||
@ -159,8 +205,9 @@ class FileTree {
|
||||
// Vérifier si le swap concerne le file-tree
|
||||
const target = event.detail?.target;
|
||||
if (target && (target.id === 'file-tree' || target.closest('#file-tree'))) {
|
||||
debug('FileTree: afterSwap detected, updating attributes...');
|
||||
debug('FileTree: afterSwap detected, updating attributes and restoring folder states...');
|
||||
this.updateDraggableAttributes();
|
||||
setTimeout(() => this.restoreFolderStates(), 50);
|
||||
}
|
||||
});
|
||||
|
||||
@ -169,8 +216,9 @@ class FileTree {
|
||||
const target = event.detail?.target;
|
||||
// Ignorer les swaps de statut (auto-save-status, save-status)
|
||||
if (target && target.id === 'file-tree') {
|
||||
debug('FileTree: oobAfterSwap detected, updating attributes...');
|
||||
debug('FileTree: oobAfterSwap detected, updating attributes and restoring folder states...');
|
||||
this.updateDraggableAttributes();
|
||||
setTimeout(() => this.restoreFolderStates(), 50);
|
||||
}
|
||||
});
|
||||
|
||||
@ -181,6 +229,7 @@ class FileTree {
|
||||
setTimeout(() => {
|
||||
this.setupEventListeners();
|
||||
this.updateDraggableAttributes();
|
||||
this.restoreFolderStates();
|
||||
}, 50);
|
||||
});
|
||||
}
|
||||
@ -678,7 +727,7 @@ class SelectionManager {
|
||||
const checkbox = document.querySelector(`.selection-checkbox[data-path="${path}"]`);
|
||||
const isDir = checkbox?.dataset.isDir === 'true';
|
||||
|
||||
li.innerHTML = `${isDir ? '📁' : '📄'} <code>${path}</code>`;
|
||||
li.innerHTML = `${isDir ? '<i data-lucide="folder" class="icon-sm"></i>' : '<i data-lucide="file-text" class="icon-sm"></i>'} <code>${path}</code>`;
|
||||
ul.appendChild(li);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user