MCPcopy Create free account
hub / github.com/error311/FileRise / openFolderActionsMenu

Function openFolderActionsMenu

public/js/folderManager.js:2893–2942  ·  view source on GitHub ↗
(folder, targetEl, clientX, clientY)

Source from the content-addressed store, hash-verified

2891}
2892
2893async function openFolderActionsMenu(folder, targetEl, clientX, clientY) {
2894 if (!folder) return;
2895
2896 window.currentFolder = folder;
2897 await applyFolderCapabilities(folder);
2898
2899 // Clear previous selection in tree + breadcrumb
2900 document.querySelectorAll('.folder-option, .breadcrumb-link').forEach(el => el.classList.remove('selected'));
2901
2902 // Mark the clicked thing selected (folder-option or breadcrumb)
2903 if (targetEl) targetEl.classList.add('selected');
2904
2905 // Also sync selection in the tree if we invoked from a breadcrumb or kebab
2906 const tree = document.getElementById('folderTreeContainer');
2907 if (tree) {
2908 const inTree = tree.querySelector(`.folder-option[data-folder="${CSS.escape(folder)}"]`);
2909 if (inTree) inTree.classList.add('selected');
2910 }
2911
2912 // Show the kebab only for this selected folder
2913 updateFolderActionButtons();
2914
2915 const canColor = !!(window.currentFolderCaps && window.currentFolderCaps.canEdit);
2916 const enc = (window.currentFolderCaps && window.currentFolderCaps.encryption) ? window.currentFolderCaps.encryption : {};
2917 const canEncrypt = !!enc.canEncrypt;
2918 const canDecrypt = !!enc.canDecrypt;
2919 const canShareFolder = !!window.currentFolderCaps?.canShareFolder;
2920
2921 const menuItems = [
2922 {
2923 label: t('create_folder'),
2924 action: () => {
2925 const modal = document.getElementById('createFolderModal');
2926 const input = document.getElementById('newFolderName');
2927 if (modal) modal.style.display = 'block';
2928 if (input) input.focus();
2929 }
2930 },
2931 { label: t('move_folder'), action: () => openMoveFolderUI(folder, 'move') },
2932 { label: t('copy_folder'), action: () => openMoveFolderUI(folder, 'copy') },
2933 { label: t('rename_folder'), action: () => { startInlineRenameInTree(folder); } },
2934 ...(canColor ? [{ label: t('color_folder'), action: () => openColorFolderModal(folder) }] : []),
2935 ...(canEncrypt ? [{ label: 'Encrypt folder', icon: 'lock', action: () => startFolderCryptoJobFlow(folder, 'encrypt') }] : []),
2936 ...(canDecrypt ? [{ label: 'Decrypt folder', icon: 'lock_open', action: () => startFolderCryptoJobFlow(folder, 'decrypt') }] : []),
2937 ...(canShareFolder ? [{ label: t('folder_share'), action: () => openFolderShareModal(folder) }] : []),
2938 { label: t('delete_folder'), action: () => openDeleteFolderModal() },
2939 ];
2940
2941 showFolderManagerContextMenu(clientX, clientY, menuItems);
2942}
2943
2944async function setFolderEncryption(folder, encrypted) {
2945 try {

Callers 2

addFolderActionButtonFunction · 0.85

Calls 10

applyFolderCapabilitiesFunction · 0.85
tFunction · 0.85
openMoveFolderUIFunction · 0.85
startInlineRenameInTreeFunction · 0.85
openColorFolderModalFunction · 0.85
startFolderCryptoJobFlowFunction · 0.85
openFolderShareModalFunction · 0.85
openDeleteFolderModalFunction · 0.85

Tested by

no test coverage detected