Isolate compact folder tree controls

This commit is contained in:
Mikei386
2026-07-14 18:30:47 +02:00
parent e3b95abca6
commit 19a869d55a
5 changed files with 35 additions and 9 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
set -eu set -eu
PLUGIN="u-navigator" PLUGIN="u-navigator"
VERSION="2026.07.14.r014" VERSION="2026.07.14.r015"
PKG_DIR="packages" PKG_DIR="packages"
WORK_DIR=".plugin-build" WORK_DIR=".plugin-build"
PKG_NAME="${PLUGIN}-${VERSION}.tgz" PKG_NAME="${PLUGIN}-${VERSION}.tgz"
Binary file not shown.
+14 -4
View File
@@ -456,13 +456,13 @@ function renderTreeBranch(win, path, label, level) {
return ` return `
<div class="tree-branch"> <div class="tree-branch">
<div class="tree-row ${active ? 'active' : ''}" style="--tree-level:${level}"> <div class="tree-row ${active ? 'active' : ''}" style="--tree-level:${level}">
<button class="tree-caret" data-tree-toggle="${escapeAttr(path)}" title="${expanded ? 'Zuklappen' : 'Aufklappen'}" aria-label="${expanded ? 'Zuklappen' : 'Aufklappen'}" ${mayExpand ? '' : 'disabled'}> <span class="tree-caret ${mayExpand ? '' : 'disabled'}" ${mayExpand ? `data-tree-toggle="${escapeAttr(path)}" tabindex="0" role="button"` : ''} title="${expanded ? 'Zuklappen' : 'Aufklappen'}" aria-label="${expanded ? 'Zuklappen' : 'Aufklappen'}" aria-disabled="${mayExpand ? 'false' : 'true'}">
${loading ? '<span class="tree-spinner"></span>' : iconSvg(expanded ? 'chevronDown' : 'chevronRight')} ${loading ? '<span class="tree-spinner"></span>' : iconSvg(expanded ? 'chevronDown' : 'chevronRight')}
</button> </span>
<button class="tree-label" data-tree-open="${escapeAttr(path)}" title="${escapeAttr(path)}"> <span class="tree-label" data-tree-open="${escapeAttr(path)}" title="${escapeAttr(path)}" tabindex="0" role="button">
<span class="tree-folder">${iconSvg('folder')}</span> <span class="tree-folder">${iconSvg('folder')}</span>
<span>${escapeHtml(label)}</span> <span>${escapeHtml(label)}</span>
</button> </span>
</div> </div>
${childMarkup} ${childMarkup}
</div> </div>
@@ -476,6 +476,7 @@ function bindFolderTree(body, win) {
}); });
for (const button of body.querySelectorAll('[data-tree-open]')) { for (const button of body.querySelectorAll('[data-tree-open]')) {
button.addEventListener('click', () => loadExplorer(win, button.dataset.treeOpen)); button.addEventListener('click', () => loadExplorer(win, button.dataset.treeOpen));
bindTreeKeyboard(button);
} }
for (const button of body.querySelectorAll('[data-tree-toggle]')) { for (const button of body.querySelectorAll('[data-tree-toggle]')) {
button.addEventListener('click', async () => { button.addEventListener('click', async () => {
@@ -491,9 +492,18 @@ function bindFolderTree(body, win) {
win.data.treeExpanded = [...expanded]; win.data.treeExpanded = [...expanded];
await loadTreeChildren(win, path); await loadTreeChildren(win, path);
}); });
bindTreeKeyboard(button);
} }
} }
function bindTreeKeyboard(element) {
element.addEventListener('keydown', (event) => {
if (event.key !== 'Enter' && event.key !== ' ') return;
event.preventDefault();
element.click();
});
}
function startTreeResize(event, win, body) { function startTreeResize(event, win, body) {
if (event.button !== 0) return; if (event.button !== 0) return;
event.preventDefault(); event.preventDefault();
+18 -2
View File
@@ -395,10 +395,17 @@
.u-nav .tree-caret, .u-nav .tree-caret,
.u-nav .tree-label { .u-nav .tree-label {
appearance: none;
background: transparent; background: transparent;
border: 0; border: 0;
border-radius: 6px; border-radius: 6px;
box-shadow: none;
cursor: pointer;
letter-spacing: normal !important;
margin: 0 !important;
min-height: 26px; min-height: 26px;
text-transform: none !important;
user-select: none;
} }
.u-nav .tree-caret { .u-nav .tree-caret {
@@ -406,6 +413,7 @@
display: inline-flex; display: inline-flex;
flex: 0 0 24px; flex: 0 0 24px;
justify-content: center; justify-content: center;
line-height: 1;
padding: 0; padding: 0;
width: 24px; width: 24px;
} }
@@ -415,7 +423,8 @@
width: 13px; width: 13px;
} }
.u-nav .tree-caret:disabled { .u-nav .tree-caret.disabled {
cursor: default;
opacity: 0.22; opacity: 0.22;
} }
@@ -424,11 +433,12 @@
color: inherit; color: inherit;
display: flex; display: flex;
flex: 1; flex: 1;
font: 500 12px/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
gap: 5px !important; gap: 5px !important;
justify-content: flex-start !important; justify-content: flex-start !important;
min-width: 0; min-width: 0;
overflow: hidden; overflow: hidden;
padding: 0 5px 0 2px; padding: 0 5px 0 0 !important;
text-align: left !important; text-align: left !important;
} }
@@ -443,6 +453,12 @@
border-color: transparent; border-color: transparent;
} }
.u-nav .tree-label:focus-visible,
.u-nav .tree-caret:focus-visible {
outline: 2px solid color-mix(in srgb, var(--accent) 72%, transparent);
outline-offset: -2px;
}
.u-nav .tree-label.drop-target { .u-nav .tree-label.drop-target {
background: var(--accent-soft); background: var(--accent-soft);
box-shadow: inset 0 0 0 1px var(--accent); box-shadow: inset 0 0 0 1px var(--accent);
+2 -2
View File
@@ -1,7 +1,7 @@
<!DOCTYPE PLUGIN [ <!DOCTYPE PLUGIN [
<!ENTITY name "u-navigator"> <!ENTITY name "u-navigator">
<!ENTITY author "Michael Roll"> <!ENTITY author "Michael Roll">
<!ENTITY version "2026.07.14.r014"> <!ENTITY version "2026.07.14.r015">
<!ENTITY package "&name;-&version;.tgz"> <!ENTITY package "&name;-&version;.tgz">
<!ENTITY pluginURL "https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/u-navigator.plg"> <!ENTITY pluginURL "https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/u-navigator.plg">
<!ENTITY support "https://git.casaderoll.de/michael/Unraid-Navigator"> <!ENTITY support "https://git.casaderoll.de/michael/Unraid-Navigator">
@@ -24,7 +24,7 @@
<FILE Name="/boot/config/plugins/&name;/&package;"> <FILE Name="/boot/config/plugins/&name;/&package;">
<URL>https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package;</URL> <URL>https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package;</URL>
<MD5>b4fd1637ca533afc55dbff96903fc53a</MD5> <MD5>e7bd64a4dda7a5915d9ef73657dec517</MD5>
</FILE> </FILE>
<FILE Run="/bin/bash"> <FILE Run="/bin/bash">