(htmlContent)
| 707 | } |
| 708 | |
| 709 | function showHelpPopup(htmlContent) { |
| 710 | // Remove any existing popup |
| 711 | const existingPopup = document.querySelector('.ui-help-popup'); |
| 712 | if (existingPopup) { |
| 713 | existingPopup.remove(); |
| 714 | } |
| 715 | |
| 716 | // Create popup |
| 717 | const popup = document.createElement('div'); |
| 718 | popup.className = 'ui-help-popup'; |
| 719 | |
| 720 | const popupContent = document.createElement('div'); |
| 721 | popupContent.className = 'ui-help-popup-content'; |
| 722 | |
| 723 | const closeButton = document.createElement('button'); |
| 724 | closeButton.className = 'ui-help-popup-close'; |
| 725 | closeButton.innerHTML = '×'; |
| 726 | closeButton.setAttribute('aria-label', 'Close help'); |
| 727 | |
| 728 | const contentDiv = document.createElement('div'); |
| 729 | contentDiv.innerHTML = htmlContent; |
| 730 | |
| 731 | popupContent.appendChild(closeButton); |
| 732 | popupContent.appendChild(contentDiv); |
| 733 | popup.appendChild(popupContent); |
| 734 | |
| 735 | // Add event listeners |
| 736 | closeButton.addEventListener('click', () => { |
| 737 | popup.remove(); |
| 738 | }); |
| 739 | |
| 740 | popup.addEventListener('click', (e) => { |
| 741 | if (e.target === popup) { |
| 742 | popup.remove(); |
| 743 | } |
| 744 | }); |
| 745 | |
| 746 | // Handle escape key |
| 747 | const handleEscape = (e) => { |
| 748 | if (e.key === 'Escape') { |
| 749 | popup.remove(); |
| 750 | document.removeEventListener('keydown', handleEscape); |
| 751 | } |
| 752 | }; |
| 753 | document.addEventListener('keydown', handleEscape); |
| 754 | |
| 755 | // Add to DOM |
| 756 | document.body.appendChild(popup); |
| 757 | } |
| 758 | |
| 759 | function showTooltip(button, tooltip) { |
| 760 | // Get button position relative to viewport |
no test coverage detected