diff --git a/webui/html/assets/css/app.css b/webui/html/assets/css/app.css index bb5941e..915b678 100644 --- a/webui/html/assets/css/app.css +++ b/webui/html/assets/css/app.css @@ -250,6 +250,7 @@ header{ .btn:hover{background: var(--btn2)} .btn:active{transform: translateY(1px)} .btn.small{padding:7px 9px; border-radius: 10px} +.btn.tiny{padding:1px 5px; border-radius: 4px; font-size:11px; line-height:16px;} .btn.ghost{background: transparent} .btn.ok{border-color: rgba(45,212,191,.6)} .btn.bad{border-color: rgba(251,113,133,.6)} @@ -643,29 +644,30 @@ pre{ .sidebar .navLabel { display: none; } .sidebar .tab { justify-content: center; } } -/* Files tree (Portainer-ish) */ +/* Files tree (IDE sidebar stijl) */ .file-folder-row{ display:flex; align-items:center; justify-content:space-between; - gap:10px; + gap:6px; cursor:pointer; user-select:none; - padding: 10px 12px; - border: 1px solid var(--card-border); - border-radius: 12px; - background: var(--folder-bg); - transition: background .12s ease, border-color .12s ease, transform .06s ease; + padding: 2px 6px; + border: none; + border-radius: 4px; + background: transparent; + transition: background .1s ease; + line-height: 22px; + font-weight: 600; } .file-folder-row:hover{ background: var(--folder-hover); - border-color: rgba(96,165,250,.35); } -.file-folder-row:active{ - transform: translateY(1px); +.file-entry:hover{ + background: var(--folder-hover); } .file-folder-left{ @@ -697,19 +699,19 @@ pre{ .file-folder-files{ margin-left: 0; - margin-top: 6px; - padding-left: 12px; - border-left: 1px dashed var(--soft-line); + margin-top: 0; + padding-left: 0; + border-left: none; } .file-entry{ display:flex; align-items:center; justify-content:space-between; - gap:10px; - padding:4px 0; - border-bottom:1px dashed var(--soft-line); - border-radius: 8px; + gap:6px; + padding: 2px 6px; + border-radius: 4px; + line-height: 22px; } .file-entry-name{ cursor:pointer; diff --git a/webui/html/assets/js/tabs/files.js b/webui/html/assets/js/tabs/files.js index 95298d0..f264e67 100644 --- a/webui/html/assets/js/tabs/files.js +++ b/webui/html/assets/js/tabs/files.js @@ -21,9 +21,10 @@ function filesSetEditorTheme(themeName) { window.filesSetEditorTheme = filesSetEditorTheme; -function _isFolderCollapsed(folderKey) { - return localStorage.getItem('files_folder_collapsed:' + folderKey) !== '0'; - // default collapsed = true +function _isFolderCollapsed(folderKey, level) { + const stored = localStorage.getItem('files_folder_collapsed:' + folderKey); + if (stored !== null) return stored !== '0'; + return true; // standaard alles ingeklapt } function _setFolderCollapsed(folderKey, v) { @@ -246,37 +247,26 @@ async function filesRefresh() { function renderNode(node, level) { const folderKey = node.apiPath; - const collapsed = _isFolderCollapsed(folderKey); + const collapsed = _isFolderCollapsed(folderKey, level); const label = node.uiPath || 'root'; const indent = Math.max(0, level) * 14; const folder = folderByPath.get(folderKey); const files = (folder && folder.files) ? folder.files : []; - - // subfolders (NU AL beschikbaar voor de badges) const childNames = Array.from(node.children.keys()).sort((a,b) => a.localeCompare(b)); - - // files (NU AL beschikbaar voor de badges) const sortedFiles = (files || []).slice().sort((a,b) => a.localeCompare(b)); const out = []; - out.push(` -
- - ${collapsed ? '▶' : '▼'} - 📂 ${esc(label)} - - - 📁 ${childNames.length} - 📄 ${sortedFiles.length} - - - - - - -
- `); + out.push(`
+ + ${collapsed ? '▶' : '▼'} + 📂 ${esc(label)} + + + + + +
`); out.push(`
`); @@ -287,16 +277,14 @@ async function filesRefresh() { for (const f of sortedFiles) { const fullUi = node.uiPath ? `${node.uiPath}/${f}` : f; const fileKey = encodeURIComponent(fullUi); - out.push(` -
- 📄 ${esc(f)} - -
- `); + out.push(`
+ 📄 ${esc(f)} + +
`); } if (!childNames.length && !sortedFiles.length) { - out.push(`
(leeg)
`); + out.push(`
(leeg)
`); } out.push(`
`); @@ -311,30 +299,25 @@ async function filesRefresh() { const rootFolder = folderByPath.get(FILES_ROOT); if (rootFolder && (rootFolder.files || []).length) { const folderKey = FILES_ROOT; - const collapsed = _isFolderCollapsed(folderKey); - parts.unshift(` -
- - ${collapsed ? '▶' : '▼'} - 📂 root - - - - -
-
- ${(rootFolder.files || []).slice().sort((a,b)=>a.localeCompare(b)).map(f => { - const fullUi = f; - const fileKey = encodeURIComponent(fullUi); - return ` -
- 📄 ${esc(f)} - -
- `; - }).join('')} -
- `); + const collapsed = _isFolderCollapsed(folderKey, 0); + parts.unshift(`
+ + ${collapsed ? '▶' : '▼'} + 📂 root + + + + +
+
+ ${(rootFolder.files || []).slice().sort((a,b)=>a.localeCompare(b)).map(f => { + const fileKey = encodeURIComponent(f); + return `
+ 📄 ${esc(f)} + +
`; + }).join('')} +
`); } treeEl.innerHTML = parts.join('');