feat: contextmenu deel 3a rename en delete
This commit is contained in:
+50
-1
@@ -326,7 +326,8 @@ function contextMenuElements() {
|
||||
menu: document.getElementById("context-menu"),
|
||||
scope: document.getElementById("context-menu-scope"),
|
||||
target: document.getElementById("context-menu-target"),
|
||||
placeholder: document.getElementById("context-menu-open-placeholder"),
|
||||
renameButton: document.getElementById("context-menu-rename-btn"),
|
||||
deleteButton: document.getElementById("context-menu-delete-btn"),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -367,6 +368,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.renameButton.classList.toggle("hidden", isMulti);
|
||||
elements.deleteButton.classList.remove("hidden");
|
||||
|
||||
const menuWidth = 220;
|
||||
const menuHeight = 120;
|
||||
@@ -377,6 +380,45 @@ function openContextMenu(pane, entry, event) {
|
||||
elements.menu.classList.remove("hidden");
|
||||
}
|
||||
|
||||
function applyContextMenuSelection() {
|
||||
if (!contextMenuState.items.length) {
|
||||
return false;
|
||||
}
|
||||
const pane = contextMenuState.pane;
|
||||
const model = paneState(pane);
|
||||
setActivePane(pane);
|
||||
model.selectedItems = contextMenuState.items.map((item) => ({ ...item }));
|
||||
model.selectedItem = model.selectedItems.length > 0 ? model.selectedItems[model.selectedItems.length - 1] : null;
|
||||
const anchorPath = contextMenuState.anchorPath;
|
||||
if (anchorPath) {
|
||||
const currentIndex = model.visibleItems.findIndex((item) => !item.isParent && item.path === anchorPath);
|
||||
if (currentIndex >= 0) {
|
||||
model.currentRowIndex = currentIndex;
|
||||
setSelectionAnchor(pane, currentIndex);
|
||||
}
|
||||
}
|
||||
renderPaneItems(pane);
|
||||
return true;
|
||||
}
|
||||
|
||||
function startContextMenuRename() {
|
||||
if (!applyContextMenuSelection()) {
|
||||
closeContextMenu();
|
||||
return;
|
||||
}
|
||||
closeContextMenu();
|
||||
openRenamePopup();
|
||||
}
|
||||
|
||||
function startContextMenuDelete() {
|
||||
if (!applyContextMenuSelection()) {
|
||||
closeContextMenu();
|
||||
return;
|
||||
}
|
||||
closeContextMenu();
|
||||
deleteSelected();
|
||||
}
|
||||
|
||||
function settingsElements() {
|
||||
return {
|
||||
overlay: document.getElementById("settings-modal"),
|
||||
@@ -3694,6 +3736,13 @@ function setupEvents() {
|
||||
}
|
||||
};
|
||||
}
|
||||
const contextMenu = contextMenuElements();
|
||||
if (contextMenu.renameButton) {
|
||||
contextMenu.renameButton.onclick = startContextMenuRename;
|
||||
}
|
||||
if (contextMenu.deleteButton) {
|
||||
contextMenu.deleteButton.onclick = startContextMenuDelete;
|
||||
}
|
||||
document.addEventListener("click", (event) => {
|
||||
const elements = uploadElements();
|
||||
if (!elements.menu || elements.menu.contains(event.target)) {
|
||||
|
||||
Reference in New Issue
Block a user