diff --git a/build-plugin.sh b/build-plugin.sh index 5392e7b..d52c928 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.07.14.r014" +VERSION="2026.07.14.r015" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.07.14.r015.tgz b/packages/u-navigator-2026.07.14.r015.tgz new file mode 100644 index 0000000..dc054b8 Binary files /dev/null and b/packages/u-navigator-2026.07.14.r015.tgz differ diff --git a/server/public/app.js b/server/public/app.js index 1572ecd..9b5c62f 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -456,13 +456,13 @@ function renderTreeBranch(win, path, label, level) { return `
- - +
${childMarkup}
@@ -476,6 +476,7 @@ function bindFolderTree(body, win) { }); for (const button of body.querySelectorAll('[data-tree-open]')) { button.addEventListener('click', () => loadExplorer(win, button.dataset.treeOpen)); + bindTreeKeyboard(button); } for (const button of body.querySelectorAll('[data-tree-toggle]')) { button.addEventListener('click', async () => { @@ -491,9 +492,18 @@ function bindFolderTree(body, win) { win.data.treeExpanded = [...expanded]; 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) { if (event.button !== 0) return; event.preventDefault(); diff --git a/server/public/styles.css b/server/public/styles.css index 1d67a41..b145d92 100644 --- a/server/public/styles.css +++ b/server/public/styles.css @@ -395,10 +395,17 @@ .u-nav .tree-caret, .u-nav .tree-label { + appearance: none; background: transparent; border: 0; border-radius: 6px; + box-shadow: none; + cursor: pointer; + letter-spacing: normal !important; + margin: 0 !important; min-height: 26px; + text-transform: none !important; + user-select: none; } .u-nav .tree-caret { @@ -406,6 +413,7 @@ display: inline-flex; flex: 0 0 24px; justify-content: center; + line-height: 1; padding: 0; width: 24px; } @@ -415,7 +423,8 @@ width: 13px; } -.u-nav .tree-caret:disabled { +.u-nav .tree-caret.disabled { + cursor: default; opacity: 0.22; } @@ -424,11 +433,12 @@ color: inherit; display: flex; flex: 1; + font: 500 12px/1.2 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important; gap: 5px !important; justify-content: flex-start !important; min-width: 0; overflow: hidden; - padding: 0 5px 0 2px; + padding: 0 5px 0 0 !important; text-align: left !important; } @@ -443,6 +453,12 @@ 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 { background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent); diff --git a/u-navigator.plg b/u-navigator.plg index 1862a86..43a9c45 100644 --- a/u-navigator.plg +++ b/u-navigator.plg @@ -1,7 +1,7 @@ - + @@ -24,7 +24,7 @@ https://git.casaderoll.de/michael/Unraid-Navigator/raw/branch/main/packages/&package; -b4fd1637ca533afc55dbff96903fc53a +e7bd64a4dda7a5915d9ef73657dec517