Refactor file opening to use TabManager and add dashboard tab system
This commit is contained in:
+29
-17
@@ -542,7 +542,7 @@
|
||||
li.appendChild(metaEl);
|
||||
li.addEventListener("click", () => {
|
||||
this.hide();
|
||||
openFile(item.vault, item.path);
|
||||
TabManager.openPreview(item.vault, item.path);
|
||||
});
|
||||
this._titlesList.appendChild(li);
|
||||
});
|
||||
@@ -2642,10 +2642,15 @@
|
||||
attachTreeItemLongPress(fileItem, () => ({ vault: vaultName, path: item.path, type: "file", isReadonly: false }));
|
||||
fileItem.addEventListener("click", () => {
|
||||
scrollTreeItemIntoView(fileItem, false);
|
||||
openFile(vaultName, item.path);
|
||||
TabManager.openPreview(vaultName, item.path);
|
||||
closeMobileSidebar();
|
||||
});
|
||||
|
||||
fileItem.addEventListener("dblclick", (e) => {
|
||||
e.preventDefault();
|
||||
TabManager.openPersistent(vaultName, item.path);
|
||||
});
|
||||
|
||||
fileItem.addEventListener("contextmenu", (e) => {
|
||||
e.preventDefault();
|
||||
const isReadonly = false;
|
||||
@@ -2797,7 +2802,7 @@
|
||||
if (entry.type === "directory") {
|
||||
await focusPathInSidebar(entry.vault, entry.path, { alignToTop: true, expandTarget: true });
|
||||
} else {
|
||||
await openFile(entry.vault, entry.path);
|
||||
await TabManager.openPreview(entry.vault, entry.path);
|
||||
await focusPathInSidebar(entry.vault, getParentDirectoryPath(entry.path), { alignToTop: true, expandTarget: true });
|
||||
syncActiveFileTreeItem(entry.vault, entry.path);
|
||||
}
|
||||
@@ -5657,26 +5662,16 @@
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
// Wire dashboard tab switching
|
||||
document.querySelectorAll(".dashboard-tab").forEach(tab => {
|
||||
tab.addEventListener("click", function() {
|
||||
document.querySelectorAll(".dashboard-tab").forEach(t => t.classList.remove("active"));
|
||||
document.querySelectorAll(".dashboard-panel").forEach(p => p.classList.remove("active"));
|
||||
this.classList.add("active");
|
||||
const panel = document.getElementById("dashboard-panel-" + this.dataset.tab);
|
||||
if (panel) panel.classList.add("active");
|
||||
});
|
||||
});
|
||||
|
||||
// Re-initialize widgets
|
||||
// Re-initialize widgets and dashboard tabs
|
||||
if (typeof DashboardRecentWidget !== "undefined") {
|
||||
DashboardRecentWidget.init();
|
||||
}
|
||||
initDashboardTabs();
|
||||
safeCreateIcons();
|
||||
} else if (home) {
|
||||
// Dashboard already exists, just show it
|
||||
// Dashboard already exists, show it with default tab
|
||||
home.style.display = "";
|
||||
// Activate default tab
|
||||
// Reset tabs to default
|
||||
document.querySelectorAll(".dashboard-tab").forEach(t => t.classList.remove("active"));
|
||||
document.querySelectorAll(".dashboard-panel").forEach(p => p.classList.remove("active"));
|
||||
const defaultTab = document.querySelector('.dashboard-tab[data-tab="stats"]');
|
||||
@@ -7506,8 +7501,25 @@
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
init();
|
||||
registerServiceWorker();
|
||||
initDashboardTabs();
|
||||
});
|
||||
|
||||
// ── Dashboard tab switching (runs on page load and after rebuild) ──
|
||||
function initDashboardTabs() {
|
||||
document.querySelectorAll(".dashboard-tab").forEach(tab => {
|
||||
// Remove existing listeners by cloning
|
||||
const newTab = tab.cloneNode(true);
|
||||
tab.parentNode.replaceChild(newTab, tab);
|
||||
newTab.addEventListener("click", function() {
|
||||
document.querySelectorAll(".dashboard-tab").forEach(t => t.classList.remove("active"));
|
||||
document.querySelectorAll(".dashboard-panel").forEach(p => p.classList.remove("active"));
|
||||
this.classList.add("active");
|
||||
const panel = document.getElementById("dashboard-panel-" + this.dataset.tab);
|
||||
if (panel) panel.classList.add("active");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Tab Manager — Multi-file tab support
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user