feat: onglet Accueil, menus contextuels de navigation et racine vault #158
- clic sur le titre: la page d'accueil s'ouvre dans un onglet Accueil (icone Maison) epingle en tete de barre, reactivable d'un clic (onglet propre au panneau actif en split) - page de navigation: menus contextuels des repertoires et des fichiers identiques a ceux de la sidebar, clic sur la racine d'un vault qui ouvre la vue, icone dossier a la couleur de l'arbre de navigation - BUG-101: bloc « Keyboard shortcuts for tabs » duplique dans ui.js (un seul Ctrl+W fermait deux onglets) - BUG-102: le menu contextuel se refermait 10 ms apres son ouverture (scroll de reflow des icones lucide)
This commit is contained in:
@@ -105,6 +105,20 @@ function createPaneTabManager(paneId) {
|
||||
this.activate(tabId);
|
||||
},
|
||||
|
||||
async openHome(name = "Home") {
|
||||
const tabId = "home";
|
||||
const idx = this._tabs.findIndex((x) => x.id === tabId);
|
||||
if (idx > 0) {
|
||||
const [tab] = this._tabs.splice(idx, 1);
|
||||
this._tabs.unshift(tab);
|
||||
} else if (idx === -1) {
|
||||
this._tabs.unshift({ id: tabId, vault: null, path: "", name, icon: "home", home: true });
|
||||
this._tabCache[tabId] = { home: true, vault: null, path: "", title: name, data: null, rawSource: null, sourceView: false, scrollTop: 0, icon: "home" };
|
||||
}
|
||||
this._renderTabs();
|
||||
this.activate(tabId);
|
||||
},
|
||||
|
||||
async openPersistent(vault, path) {
|
||||
const tabId = `${vault}::${path}`;
|
||||
const previewTab = this._tabs.find(t => t.id === tabId && t.preview);
|
||||
@@ -166,6 +180,15 @@ function createPaneTabManager(paneId) {
|
||||
const cache = this._tabCache[tabId];
|
||||
if (!cache) return;
|
||||
|
||||
// Onglet Accueil (#158) — la page d'accueil vit dans l'onglet
|
||||
if (cache.home) {
|
||||
state.currentVault = null;
|
||||
state.currentPath = null;
|
||||
this._showDashboard();
|
||||
if (history.pushState) history.pushState(null, '', '#');
|
||||
return;
|
||||
}
|
||||
|
||||
state.currentVault = cache.vault;
|
||||
state.currentPath = cache.path;
|
||||
// syncActiveFileTreeItem is imported below to avoid circular deps
|
||||
|
||||
Reference in New Issue
Block a user