From 3dfbc64913c8140677787a27221737f531f4e767 Mon Sep 17 00:00:00 2001 From: kodi Date: Sat, 14 Mar 2026 11:23:52 +0100 Subject: [PATCH] feat: contextmenu Open toegevoegd --- .../test_ui_smoke_golden.cpython-313.pyc | Bin 33278 -> 33742 bytes .../tests/golden/test_ui_smoke_golden.py | 5 +++++ webui/html/app.js | 18 ++++++++++++++++++ webui/html/index.html | 1 + 4 files changed, 24 insertions(+) diff --git a/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc b/webui/backend/tests/golden/__pycache__/test_ui_smoke_golden.cpython-313.pyc index 9771aff2689fe1babcda2ea8d6acb705c9d7e63c..d54c409aade2ad347daf54fbd38c465836a75660 100644 GIT binary patch delta 746 zcmY+BO-vI(7>0McTWF!|E){7(h+8U#s#MpA6l;xtZ~$wOWsN3y5LmHIyT$I-2-y&S zBE@(zpC-mc6Jw%@@dBe4k zEbMAgQ2}MHdv$N3PdbO$4H~_|Ma(1%7px_y3&x#Z7!2`Q1ur)_9^!FgODhfjW4VK0 z2XnN#4AS_()d%xVS8+zB>nz!HiV~>3lr#iRcLv?TkKBtij8r&n$zDaR?bKC#wPMVM z?&Cw%JPqe-INV$_V67}Gj}|jsC>KDg)vPo{q1AU)z%o0q-CtJ#17ZoZ1q?V6D1qg` z0it&`5RKn9TtmcY3i5=p;5pJbV`}pPUJqVk!4OO7QJIFN7BBRQRp>n=MK2n|QuAGe z)l>U&5hLN9h=D7jhn|pgoHQv0JoMD2{wQ0?`Sd0~$$2n*+KcjuJ0sf&XJtF#oLoTo zSuP};mmOK6FR(3AYh94ON{bMVRNEJ%Z_;9eMdjd3#AEv3P5)`65-q``Q($CHTF!2q zGB5r3H|-wE_Y-ez{XnDbaJ0RQiI|gy!|j!LO{zz1K#3~}Mb$Nb_6Hy+?+JzevyP{A zJ*oP;quRyJxY8|zgs2uy$MvXS7(!H65}H4*s6F~+!4nDzBKFCR$mPn0ok*urX7b5s zO6k&*slFN?j-MSW&wp)xoyKzbPwxv0tm_<1XdL0FHVF1K56=xAn)D8c^>GmE=ipgt zH(t;m7uq^3*81NDlfXBwx1jxPd8iRRw9UGGQ*PfHMdV7%K{1Y@{%N{wj&WqdH^a9h ND>TKFr%KIN{{lG(@}mF% delta 531 zcmX@t&h)RDiSIKnFBbz4Y&YJTX_&Z??;kT`$7WuZ3w)E`ii z%CKiiW&~LP1*|}tnSp`vvyReaJ{FbD5qhRvlWYA%CNH$8nS9nzWU`^937B7L3FdF+ zw5nhP3tSZt0Mk3IBftt%1qDF#W>1?mzRmXDb&SjhLRlssFjQnd2&E4JX#sC#MzHAS zy*>sIgBbnP7+Jvz&xb4ysFnuYM1595I` zSMg6iRR+NYrR9^^%VH*5)$mU?Ez#b*rfe=ZM>G?w`S&W8%*}yK-i$`RY>cjqGdQkG qXkL`i{K5d{en{Y9VBzVgy38zjgN3Kvx5>BF{{u4vi&T*q&?W%I_^?X= diff --git a/webui/backend/tests/golden/test_ui_smoke_golden.py b/webui/backend/tests/golden/test_ui_smoke_golden.py index 3596864..fa0a338 100644 --- a/webui/backend/tests/golden/test_ui_smoke_golden.py +++ b/webui/backend/tests/golden/test_ui_smoke_golden.py @@ -71,6 +71,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('id="context-menu"', body) self.assertIn('id="context-menu-scope"', body) self.assertIn('id="context-menu-target"', body) + self.assertIn('id="context-menu-open-btn"', body) self.assertIn('id="context-menu-rename-btn"', body) self.assertIn('id="context-menu-copy-btn"', body) self.assertIn('id="context-menu-move-btn"', body) @@ -212,6 +213,7 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('function openContextMenu(pane, entry, event)', app_js) self.assertIn('function closeContextMenu()', app_js) self.assertIn('function applyContextMenuSelection()', app_js) + self.assertIn('function startContextMenuOpen()', app_js) self.assertIn('function startContextMenuRename()', app_js) self.assertIn('function startContextMenuCopy()', app_js) self.assertIn('function startContextMenuMove()', app_js) @@ -223,12 +225,15 @@ class UiSmokeGoldenTest(unittest.TestCase): self.assertIn('event.target.closest("li[data-row-index]")', app_js) self.assertIn('if (!row) {', app_js) self.assertIn('closeContextMenu();', app_js) + self.assertIn('elements.openButton.classList.toggle("hidden", isMulti);', app_js) + self.assertIn('elements.openButton.disabled = isMulti || items.length !== 1;', app_js) self.assertIn('elements.renameButton.classList.toggle("hidden", isMulti);', app_js) self.assertIn('elements.copyButton.classList.remove("hidden");', app_js) self.assertIn('elements.copyButton.disabled = items.length === 0;', app_js) self.assertIn('elements.moveButton.classList.remove("hidden");', app_js) self.assertIn('elements.propertiesButton.classList.remove("hidden");', app_js) self.assertIn('elements.propertiesButton.disabled = items.length === 0;', app_js) + self.assertIn('openCurrentDirectory();', app_js) self.assertIn('openRenamePopup();', app_js) self.assertIn('startCopySelected();', app_js) self.assertIn('openF6Flow();', app_js) diff --git a/webui/html/app.js b/webui/html/app.js index 8ac2c87..084ac25 100644 --- a/webui/html/app.js +++ b/webui/html/app.js @@ -326,6 +326,7 @@ function contextMenuElements() { menu: document.getElementById("context-menu"), scope: document.getElementById("context-menu-scope"), target: document.getElementById("context-menu-target"), + openButton: document.getElementById("context-menu-open-btn"), renameButton: document.getElementById("context-menu-rename-btn"), copyButton: document.getElementById("context-menu-copy-btn"), moveButton: document.getElementById("context-menu-move-btn"), @@ -371,6 +372,8 @@ function openContextMenu(pane, entry, event) { const isMulti = items.length > 1; elements.scope.textContent = isMulti ? "Multi-selection" : "Single item"; elements.target.textContent = isMulti ? `${items.length} selected items` : entry.name; + elements.openButton.classList.toggle("hidden", isMulti); + elements.openButton.disabled = isMulti || items.length !== 1; elements.renameButton.classList.toggle("hidden", isMulti); elements.copyButton.classList.remove("hidden"); elements.copyButton.disabled = items.length === 0; @@ -448,6 +451,18 @@ function startContextMenuCopy() { startCopySelected(); } +function startContextMenuOpen() { + if (contextMenuElements().openButton?.disabled) { + return; + } + if (!applyContextMenuSelection()) { + closeContextMenu(); + return; + } + closeContextMenu(); + openCurrentDirectory(); +} + function startContextMenuProperties() { if (contextMenuElements().propertiesButton?.disabled) { return; @@ -3788,6 +3803,9 @@ function setupEvents() { if (contextMenu.renameButton) { contextMenu.renameButton.onclick = startContextMenuRename; } + if (contextMenu.openButton) { + contextMenu.openButton.onclick = startContextMenuOpen; + } if (contextMenu.copyButton) { contextMenu.copyButton.onclick = startContextMenuCopy; } diff --git a/webui/html/index.html b/webui/html/index.html index 3821b06..52f8e51 100644 --- a/webui/html/index.html +++ b/webui/html/index.html @@ -122,6 +122,7 @@
+