()
| 2800 | } |
| 2801 | |
| 2802 | function getFolderMenu() { |
| 2803 | let m = document.getElementById('folderManagerContextMenu'); |
| 2804 | if (!m) { |
| 2805 | m = document.createElement('div'); |
| 2806 | m.id = 'folderManagerContextMenu'; |
| 2807 | m.className = 'filr-menu'; |
| 2808 | m.setAttribute('role', 'menu'); |
| 2809 | // position + scroll are inline so it works even before CSS loads |
| 2810 | m.style.position = 'fixed'; |
| 2811 | m.style.minWidth = '180px'; |
| 2812 | m.style.maxHeight = '420px'; |
| 2813 | m.style.overflowY = 'auto'; |
| 2814 | m.hidden = true; |
| 2815 | |
| 2816 | // Close on outside click / Esc |
| 2817 | document.addEventListener('click', (ev) => { |
| 2818 | if (!m.hidden && !m.contains(ev.target)) hideFolderManagerContextMenu(); |
| 2819 | }); |
| 2820 | document.addEventListener('keydown', (ev) => { |
| 2821 | if (ev.key === 'Escape') hideFolderManagerContextMenu(); |
| 2822 | }); |
| 2823 | |
| 2824 | document.body.appendChild(m); |
| 2825 | } |
| 2826 | return m; |
| 2827 | } |
| 2828 | |
| 2829 | export function showFolderManagerContextMenu(x, y, menuItems) { |
| 2830 | const menu = getFolderMenu(); |
no test coverage detected