-
${escapeHtml(fileTypeBadge(file))}
${escapeHtml(file.filename)}
@@ -223,8 +214,13 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
${actions.primary}
-
${actions.secondary}
-
+
+
${actions.secondary}
+
+
+
+
+
`;
}
@@ -258,7 +254,7 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
if (refreshing && filesLoaded) return;
list.innerHTML = Array.from({ length: 3 }, () => `
`).join("");
}
@@ -431,12 +427,18 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
const toggleButton = event.target.closest("[data-toggle-file-actions]");
if (toggleButton) {
- const panel = toggleButton.closest(".file-row")?.querySelector(".file-secondary-actions");
+ const row = toggleButton.closest(".file-row");
+ const panel = row?.querySelector(".file-secondary-actions");
if (!panel) return;
const expanded = panel.hidden;
panel.hidden = !expanded;
toggleButton.setAttribute("aria-expanded", String(expanded));
toggleButton.textContent = expanded ? t("files.less", {}, "Less") : t("common.more", {}, "More");
+ if (!expanded) {
+ const codePanel = row.querySelector(".file-code");
+ if (codePanel) codePanel.hidden = true;
+ row.querySelectorAll("[data-show-file-code][aria-pressed="true"]").forEach(button => button.setAttribute("aria-pressed", "false"));
+ }
return;
}
@@ -452,8 +454,9 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
const showButton = event.target.closest("[data-show-file-code]");
if (showButton) {
- const panel = showButton.closest(".file-row").querySelector(".file-code");
- const output = panel.querySelector("textarea");
+ const row = showButton.closest(".file-row");
+ const panel = row.querySelector(".file-code");
+ const output = panel.querySelector(".file-code-value");
const safeUrl = safeAttachmentUrl(showButton.dataset.url);
const absolute = new URL(safeUrl, location.origin).href;
let text = showButton.dataset.showFileCode === "link" && isVideo(showButton.dataset.mime)
@@ -470,6 +473,7 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
}
output.value = text;
panel.hidden = false;
+ row.querySelectorAll("[data-show-file-code]").forEach(button => button.setAttribute("aria-pressed", String(button === showButton)));
output.focus();
output.select();
return;
@@ -478,7 +482,7 @@ export function bindNoteFiles({ editor, endpoints, getAccessToken, getUploadMaxS
const copyButton = event.target.closest("[data-copy-generated]");
if (copyButton) {
try {
- await copyText(copyButton.closest(".file-code").querySelector("textarea").value);
+ await copyText(copyButton.closest(".file-code").querySelector(".file-code-value").value);
notify("success", "Generated file code copied to the clipboard.", { title: "Copied" });
} catch (error) {
notify("danger", error.message, { title: "Could not copy file code" });