diff --git a/index.html b/index.html index 1525d15..73e87ea 100644 --- a/index.html +++ b/index.html @@ -2022,6 +2022,7 @@ } // Show loading indicator and defer pathfinding to allow UI update + ensurePopupInBody('routeOverlay'); document.getElementById('routeOverlay').style.display = 'flex'; document.getElementById('navInfo').style.display = 'none'; @@ -2727,6 +2728,16 @@ }, 100); } + // Helper function to ensure popups are in body + function ensurePopupInBody(elementId) { + const element = document.getElementById(elementId); + if (element && element.parentElement !== document.body) { + console.log(`Moving ${elementId} to body from:`, element.parentElement.id || element.parentElement.className); + document.body.appendChild(element); + } + return element; + } + function showGeocacheDialog(geocache, isNew = false) { // In nav mode, check if user is close enough to view/interact let userDistance = Infinity; @@ -2736,7 +2747,8 @@ } currentGeocache = geocache; - const dialog = document.getElementById('geocacheDialog'); + // Ensure dialog is in body + const dialog = ensurePopupInBody('geocacheDialog'); const messagesDiv = document.getElementById('geocacheMessages'); const deleteBtn = document.getElementById('geocacheDelete'); const submitBtn = document.getElementById('geocacheSubmit'); @@ -4966,6 +4978,7 @@ // Show confirmation dialog const message = `Navigate to ${nearest.track.name}?`; document.getElementById('navConfirmMessage').textContent = message; + ensurePopupInBody('navConfirmDialog'); document.getElementById('navConfirmDialog').style.display = 'flex'; isPressing = false; } @@ -5047,6 +5060,7 @@ document.getElementById('pressHoldIndicator').style.display = 'none'; const message = `Navigate to ${pendingDestination.track.name}?`; document.getElementById('navConfirmMessage').textContent = message; + ensurePopupInBody('navConfirmDialog'); document.getElementById('navConfirmDialog').style.display = 'flex'; lastTapTime = 0; // Reset to prevent triple tap @@ -5138,6 +5152,7 @@ pendingDestination = nearest; const message = `Navigate to ${nearest.track.name}?`; document.getElementById('navConfirmMessage').textContent = message; + ensurePopupInBody('navConfirmDialog'); document.getElementById('navConfirmDialog').style.display = 'flex'; } } else if (currentTool === 'draw' && isDrawing) { @@ -6048,6 +6063,7 @@ document.getElementById('remeshDetails').innerHTML = `Selected tracks: ${trackNames}
` + `Current total points: ${totalPoints}`; + ensurePopupInBody('remeshDialog'); document.getElementById('remeshDialog').style.display = 'flex'; }); @@ -6382,6 +6398,7 @@ if (savedDestination && savedNavMode === 'true') { // Show resume navigation dialog + ensurePopupInBody('resumeNavDialog'); document.getElementById('resumeNavDialog').style.display = 'flex'; } else { // Start in navigate mode by default if no saved state