- Moved CONTEXT_MENU_INDEX.md and CONTEXT_MENU_VERIFICATION.md into docs/ directory for better organization - Consolidated all context menu documentation files in one location for easier maintenance - Documentation remains complete with 1000+ lines covering implementation, integration, and verification The change improves documentation structure by moving context menu related files into a dedicated docs folder, making it easier for developers to find an
		
			
				
	
	
		
			203 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Context Menu - Quick Start Guide
 | |
| 
 | |
| ## 🚀 5-Minute Setup
 | |
| 
 | |
| ### 1. Files Created
 | |
| Two new files have been created:
 | |
| - ✅ `src/components/context-menu/context-menu.component.ts` - Standalone menu component
 | |
| - ✅ Enhanced `src/components/file-explorer/file-explorer.component.ts` - With menu integration
 | |
| 
 | |
| ### 2. What's Already Done
 | |
| - ✅ Context menu component fully implemented
 | |
| - ✅ Integrated into file-explorer
 | |
| - ✅ All 7 actions defined (with TODO placeholders for VaultService calls)
 | |
| - ✅ 8-color palette with localStorage persistence
 | |
| - ✅ Folder icon color changes based on selection
 | |
| - ✅ Smooth animations and adaptive positioning
 | |
| - ✅ ESC key and click-outside close handlers
 | |
| 
 | |
| ### 3. How to Use
 | |
| 
 | |
| #### Right-Click on a Folder
 | |
| 1. Navigate to the Folders section in the sidebar
 | |
| 2. Right-click on any folder
 | |
| 3. The context menu appears at your cursor
 | |
| 
 | |
| #### Available Actions
 | |
| | Action | Description |
 | |
| |--------|-------------|
 | |
| | 📁 Create subfolder | Create a new folder inside the selected folder |
 | |
| | ✏️ Rename | Rename the selected folder |
 | |
| | 📋 Duplicate | Create a copy of the folder |
 | |
| | 📄 Create new page | Create a new markdown file in the folder |
 | |
| | 🔗 Copy internal link | Copy `[[path/to/folder]]` to clipboard |
 | |
| | 🗑️ Delete folder | Delete the folder (with confirmation) |
 | |
| | ⚠️ Delete all pages | Delete all pages in the folder (with confirmation) |
 | |
| 
 | |
| #### Color Palette
 | |
| Click any of the 8 colored circles to change the folder icon color:
 | |
| - 🔵 Sky Blue, Blue, Green, Yellow
 | |
| - 🟠 Orange, Red, Purple, Gray
 | |
| 
 | |
| Colors are saved automatically and persist across sessions.
 | |
| 
 | |
| ### 4. Current State
 | |
| 
 | |
| **Implemented & Working:**
 | |
| - ✅ Menu UI and animations
 | |
| - ✅ Position calculation and viewport adaptation
 | |
| - ✅ Color selection and persistence
 | |
| - ✅ Copy internal link (fully functional)
 | |
| - ✅ Confirmation dialogs for delete operations
 | |
| 
 | |
| **TODO - Needs VaultService Integration:**
 | |
| - ⏳ Create subfolder
 | |
| - ⏳ Rename folder
 | |
| - ⏳ Duplicate folder
 | |
| - ⏳ Create new page
 | |
| - ⏳ Delete folder
 | |
| - ⏳ Delete all pages
 | |
| 
 | |
| ### 5. Next Steps
 | |
| 
 | |
| To complete the implementation, you need to connect the actions to VaultService:
 | |
| 
 | |
| ```typescript
 | |
| // In file-explorer.component.ts
 | |
| 
 | |
| private createSubfolder() {
 | |
|   const name = prompt('Enter subfolder name:');
 | |
|   if (!name) return;
 | |
|   // ADD THIS:
 | |
|   this.vaultService.createFolder(this.ctxTarget!.path, name);
 | |
| }
 | |
| 
 | |
| private renameFolder() {
 | |
|   const newName = prompt('Enter new folder name:', this.ctxTarget!.name);
 | |
|   if (!newName || newName === this.ctxTarget!.name) return;
 | |
|   // ADD THIS:
 | |
|   this.vaultService.renameFolder(this.ctxTarget!.path, newName);
 | |
| }
 | |
| 
 | |
| // ... and so on for other actions
 | |
| ```
 | |
| 
 | |
| ### 6. Testing
 | |
| 
 | |
| **Manual Testing:**
 | |
| 1. Build the project: `npm run build`
 | |
| 2. Start the dev server: `npm run dev`
 | |
| 3. Navigate to Folders in sidebar
 | |
| 4. Right-click on any folder
 | |
| 5. Verify menu appears and all features work
 | |
| 
 | |
| **Test Checklist:**
 | |
| - [ ] Menu appears on right-click
 | |
| - [ ] Menu closes on ESC
 | |
| - [ ] Menu closes on click outside
 | |
| - [ ] Color selection works
 | |
| - [ ] Color persists after reload
 | |
| - [ ] Copy link works (check clipboard)
 | |
| - [ ] Delete confirmations appear
 | |
| 
 | |
| ### 7. Customization
 | |
| 
 | |
| #### Change Color Palette
 | |
| Edit `context-menu.component.ts`:
 | |
| ```typescript
 | |
| colors = ['#0ea5e9','#3b82f6','#22c55e',...]; // Add/remove colors
 | |
| ```
 | |
| 
 | |
| #### Change Menu Width
 | |
| Edit the `.ctx` style:
 | |
| ```css
 | |
| .ctx {
 | |
|   min-width: 14rem;  /* Change this value */
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Change Animation Speed
 | |
| Edit the animation:
 | |
| ```css
 | |
| animation: fadeIn .12s ease-out;  /* Change .12s to desired duration */
 | |
| ```
 | |
| 
 | |
| ### 8. Browser Support
 | |
| 
 | |
| - ✅ Chrome/Edge 90+
 | |
| - ✅ Firefox 88+
 | |
| - ✅ Safari 14+
 | |
| - ✅ Mobile browsers (iOS Safari, Chrome Mobile)
 | |
| 
 | |
| ### 9. Keyboard Shortcuts
 | |
| 
 | |
| | Key | Action |
 | |
| |-----|--------|
 | |
| | ESC | Close menu |
 | |
| | Right-click | Open menu |
 | |
| 
 | |
| ### 10. Troubleshooting
 | |
| 
 | |
| **Menu doesn't appear?**
 | |
| - Check if right-click is working (not disabled by CSS)
 | |
| - Verify folder item has `(contextmenu)="openContextMenu($event, folder)"`
 | |
| 
 | |
| **Colors not saving?**
 | |
| - Check if localStorage is enabled
 | |
| - Open DevTools → Application → Local Storage → look for `folderColors`
 | |
| 
 | |
| **Copy link not working?**
 | |
| - Check browser console for errors
 | |
| - Verify clipboard permissions are granted
 | |
| - Try in a different browser
 | |
| 
 | |
| ### 11. File Locations
 | |
| 
 | |
| ```
 | |
| src/
 | |
| ├── components/
 | |
| │   ├── context-menu/
 | |
| │   │   └── context-menu.component.ts       ← Menu component
 | |
| │   └── file-explorer/
 | |
| │       ├── file-explorer.component.ts      ← Integration point
 | |
| │       └── file-explorer.component.html
 | |
| docs/
 | |
| ├── CONTEXT_MENU_IMPLEMENTATION.md          ← Full documentation
 | |
| └── CONTEXT_MENU_QUICK_START.md             ← This file
 | |
| ```
 | |
| 
 | |
| ### 12. Performance Notes
 | |
| 
 | |
| - Menu uses `ChangeDetectionStrategy.OnPush` for optimal performance
 | |
| - Signals-based state management (no unnecessary change detection)
 | |
| - Efficient color storage using Map + localStorage
 | |
| - Minimal DOM footprint (only visible when needed)
 | |
| 
 | |
| ### 13. Accessibility
 | |
| 
 | |
| - ✅ Keyboard support (ESC to close)
 | |
| - ✅ ARIA labels on color circles
 | |
| - ✅ Semantic HTML (role="button", role="menu")
 | |
| - ✅ High contrast colors
 | |
| - ✅ Touch-friendly on mobile
 | |
| 
 | |
| ### 14. Known Limitations
 | |
| 
 | |
| - Actions are currently placeholders (need VaultService implementation)
 | |
| - No keyboard navigation (arrow keys) yet
 | |
| - No submenu support
 | |
| - No drag & drop integration
 | |
| 
 | |
| ### 15. Getting Help
 | |
| 
 | |
| For detailed information, see:
 | |
| - `docs/CONTEXT_MENU_IMPLEMENTATION.md` - Full technical documentation
 | |
| - `src/components/context-menu/context-menu.component.ts` - Source code
 | |
| - `src/components/file-explorer/file-explorer.component.ts` - Integration code
 | |
| 
 | |
| ---
 | |
| 
 | |
| **Status**: ✅ UI Complete, ⏳ Actions Pending VaultService Integration  
 | |
| **Effort to Complete**: ~2-3 hours (VaultService integration)  
 | |
| **Difficulty**: Easy (straightforward method calls)
 |