()
| 2752 | } |
| 2753 | |
| 2754 | function ensureReportContextMenu() { |
| 2755 | if (state.reportContextMenu) return state.reportContextMenu; |
| 2756 | const menu = document.createElement("div"); |
| 2757 | menu.id = "reportContextMenu"; |
| 2758 | menu.className = "report-context-menu hidden"; |
| 2759 | menu.setAttribute("role", "menu"); |
| 2760 | menu.innerHTML = ` |
| 2761 | <button type="button" data-report-menu-action="highlight" role="menuitem"></button> |
| 2762 | <button type="button" data-report-menu-action="delete" role="menuitem" class="danger"></button> |
| 2763 | `; |
| 2764 | menu.addEventListener("click", (event) => { |
| 2765 | const button = event.target.closest("[data-report-menu-action]"); |
| 2766 | if (!button) return; |
| 2767 | const reportId = menu.dataset.reportId || ""; |
| 2768 | const action = button.dataset.reportMenuAction; |
| 2769 | hideReportContextMenu(); |
| 2770 | if (action === "highlight") { |
| 2771 | toggleReportCardHighlight(reportId); |
| 2772 | } else if (action === "delete") { |
| 2773 | runAction(() => deleteReportCard(reportId), "删除报告"); |
| 2774 | } |
| 2775 | }); |
| 2776 | document.body.appendChild(menu); |
| 2777 | state.reportContextMenu = menu; |
| 2778 | return menu; |
| 2779 | } |
| 2780 | |
| 2781 | function hideReportContextMenu() { |
| 2782 | if (!state.reportContextMenu) return; |
no test coverage detected