continue breadcrumb update

This commit is contained in:
Ryan
2025-04-23 23:17:23 -04:00
committed by GitHub
parent 58f8485b02
commit b5a7d8d559

View File

@@ -334,6 +334,10 @@ function folderDropHandler(event) {
}); });
} }
/* ----------------------
Main Folder Tree Rendering and Event Binding
----------------------*/
// --- Helpers for safe breadcrumb rendering ---
function renderBreadcrumbFragment(folderPath) { function renderBreadcrumbFragment(folderPath) {
const frag = document.createDocumentFragment(); const frag = document.createDocumentFragment();
const parts = folderPath.split("/"); const parts = folderPath.split("/");
@@ -357,28 +361,14 @@ function renderBreadcrumbFragment(folderPath) {
} }
function updateBreadcrumbTitle(folder) { function updateBreadcrumbTitle(folder) {
const container = document.getElementById("fileListTitle"); const titleEl = document.getElementById("fileListTitle");
container.textContent = ""; // clear old titleEl.textContent = "";
titleEl.appendChild(document.createTextNode(t("files_in") + " ("));
// prefix titleEl.appendChild(renderBreadcrumbFragment(folder));
container.appendChild( titleEl.appendChild(document.createTextNode(")"));
document.createTextNode(`${t("files_in")} (`) setupBreadcrumbDelegation();
);
// the actual crumbs
container.appendChild(
renderBreadcrumbFragment(folder)
);
// closing paren
container.appendChild(
document.createTextNode(")")
);
} }
/* ----------------------
Main Folder Tree Rendering and Event Binding
----------------------*/
export async function loadFolderTree(selectedFolder) { export async function loadFolderTree(selectedFolder) {
try { try {
// Check if the user has folder-only permission. // Check if the user has folder-only permission.
@@ -464,18 +454,8 @@ export async function loadFolderTree(selectedFolder) {
} }
localStorage.setItem("lastOpenedFolder", window.currentFolder); localStorage.setItem("lastOpenedFolder", window.currentFolder);
const titleEl = document.getElementById("fileListTitle"); // Initial breadcrumb update
titleEl.textContent = ""; updateBreadcrumbTitle(window.currentFolder);
titleEl.appendChild(
document.createTextNode(t("files_in") + " (")
);
const breadcrumbFragment = renderBreadcrumbFragment(window.currentFolder);
titleEl.appendChild(breadcrumbFragment);
titleEl.appendChild(document.createTextNode(")"));
setupBreadcrumbDelegation();
loadFileList(window.currentFolder); loadFileList(window.currentFolder);
const folderState = loadFolderTreeState(); const folderState = loadFolderTreeState();
@@ -489,6 +469,7 @@ export async function loadFolderTree(selectedFolder) {
selectedEl.classList.add("selected"); selectedEl.classList.add("selected");
} }
// Folder-option click: update selection, breadcrumbs, and file list
container.querySelectorAll(".folder-option").forEach(el => { container.querySelectorAll(".folder-option").forEach(el => {
el.addEventListener("click", function (e) { el.addEventListener("click", function (e) {
e.stopPropagation(); e.stopPropagation();
@@ -497,13 +478,14 @@ export async function loadFolderTree(selectedFolder) {
const selected = this.getAttribute("data-folder"); const selected = this.getAttribute("data-folder");
window.currentFolder = selected; window.currentFolder = selected;
localStorage.setItem("lastOpenedFolder", selected); localStorage.setItem("lastOpenedFolder", selected);
const titleEl = document.getElementById("fileListTitle");
titleEl.innerHTML = t("files_in") + " (" + renderBreadcrumb(selected) + ")"; // Safe breadcrumb update
setupBreadcrumbDelegation(); updateBreadcrumbTitle(selected);
loadFileList(selected); loadFileList(selected);
}); });
}); });
// Root toggle handler
const rootToggle = container.querySelector("#rootRow .folder-toggle"); const rootToggle = container.querySelector("#rootRow .folder-toggle");
if (rootToggle) { if (rootToggle) {
rootToggle.addEventListener("click", function (e) { rootToggle.addEventListener("click", function (e) {
@@ -527,6 +509,7 @@ export async function loadFolderTree(selectedFolder) {
}); });
} }
// Other folder-toggle handlers
container.querySelectorAll(".folder-toggle").forEach(toggle => { container.querySelectorAll(".folder-toggle").forEach(toggle => {
toggle.addEventListener("click", function (e) { toggle.addEventListener("click", function (e) {
e.stopPropagation(); e.stopPropagation();
@@ -555,6 +538,7 @@ export async function loadFolderTree(selectedFolder) {
} }
} }
// For backward compatibility. // For backward compatibility.
export function loadFolderList(selectedFolder) { export function loadFolderList(selectedFolder) {
loadFolderTree(selectedFolder); loadFolderTree(selectedFolder);