Add CSS-based fullscreen for Map tab; fix state desync bug
- Add fullscreen toggle button (⛶/✕) to Map tab controls row - CSS class `map-fs` hides header/nav and expands map to fill screen - Drop unreliable requestFullscreen() API (blocked on iOS/PWA) in favor of pure CSS approach - Fix button state desync: syncBtn() runs on init so stale ✕ state can't persist across reloads - Shrink embedded radar height on mobile (220px) and tune dvh calculations for safe-area insets Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
48ae797520
commit
b9e6cad190
3 files changed
+106
-36
No files matched your search
+73
-35
@@ -1642,18 +1642,85 @@ details[open] .drawer-chevron { transform: rotate(90deg); }
|
||||
}
|
||||
|
||||
.radar-map-full {
|
||||
height: calc(100vh - 280px);
|
||||
min-height: 420px;
|
||||
height: calc(100dvh - 290px);
|
||||
min-height: 320px;
|
||||
}
|
||||
|
||||
.radar-full-wrap {
|
||||
border: var(--surface-border);
|
||||
border-radius: var(--surface-radius-md);
|
||||
background: #1a1f2e;
|
||||
margin-bottom: 0.5rem;
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Fullscreen toggle button */
|
||||
.radar-fs-btn {
|
||||
background: var(--paper-dark);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--ink);
|
||||
font-size: 1.1rem;
|
||||
margin-left: auto;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* ── Map fullscreen mode (CSS-based, works on iOS Safari) ── */
|
||||
body.map-fs .masthead,
|
||||
body.map-fs .bottom-nav,
|
||||
body.map-fs .offline-banner,
|
||||
body.map-fs .ptr-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
body.map-fs .app {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
body.map-fs #tab-unified-map {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 9999;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body.map-fs .unified-map-wrap {
|
||||
height: 100dvh;
|
||||
padding: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
background: #1a1f2e;
|
||||
}
|
||||
|
||||
body.map-fs .map-controls-header {
|
||||
padding: 0.3rem 0.65rem;
|
||||
gap: 0;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
body.map-fs .map-controls-row label,
|
||||
body.map-fs .map-controls-row select,
|
||||
body.map-fs .map-layer-menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
body.map-fs .map-controls-row {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
body.map-fs #data-panel {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
body.map-fs .unified-map-shell {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
body.map-fs #unified-map {
|
||||
height: 100% !important;
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
/* ── Radar controls ── */
|
||||
.radar-controls {
|
||||
display: flex;
|
||||
@@ -1840,7 +1907,7 @@ details[open] .drawer-chevron { transform: rotate(90deg); }
|
||||
padding-bottom: max(4rem, calc(2rem + env(safe-area-inset-bottom)));
|
||||
}
|
||||
.radar-map-full {
|
||||
height: calc(100vh - 280px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
|
||||
height: calc(100dvh - 290px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
|
||||
}
|
||||
.map-overview {
|
||||
height: calc(100vh - 470px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
|
||||
@@ -1942,36 +2009,6 @@ details[open] .drawer-chevron { transform: rotate(90deg); }
|
||||
.tabs { display: none; }
|
||||
.bottom-nav { display: flex; }
|
||||
|
||||
#tab-radar-full {
|
||||
padding-bottom: max(6.4rem, calc(5.7rem + env(safe-area-inset-bottom, 0px)));
|
||||
}
|
||||
|
||||
.radar-controls-full {
|
||||
display: grid;
|
||||
grid-template-columns: auto auto minmax(0, 1fr);
|
||||
grid-template-areas:
|
||||
'play layer ts'
|
||||
'timeline timeline timeline';
|
||||
gap: 0.45rem 0.5rem;
|
||||
padding: 0.55rem 0.65rem;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.radar-controls-full .play-btn { grid-area: play; }
|
||||
.radar-controls-full .layer-btn { grid-area: layer; }
|
||||
.radar-controls-full .radar-ts {
|
||||
grid-area: ts;
|
||||
min-width: 0;
|
||||
text-align: right;
|
||||
font-size: 0.66rem;
|
||||
}
|
||||
|
||||
.radar-controls-full .radar-timeline {
|
||||
grid-area: timeline;
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.radar-controls-full .radar-legend { display: none; }
|
||||
.radar-attribution {
|
||||
overflow-wrap: anywhere;
|
||||
@@ -2061,7 +2098,8 @@ details[open] .drawer-chevron { transform: rotate(90deg); }
|
||||
.recs-grid { grid-template-columns: repeat(3, 1fr); }
|
||||
.day-row { grid-template-columns: 80px 36px 1fr 70px; }
|
||||
.day-meta { display: none; }
|
||||
.radar-map { height: 240px; }
|
||||
.radar-embed-wrap .radar-map { height: 220px; }
|
||||
.radar-map-full { height: calc(100dvh - 330px); min-height: 250px; }
|
||||
.legend-bar { width: 50px; }
|
||||
.settings-row { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
|
||||
.settings-value { text-align: left; }
|
||||
|
||||
Reference in new issue
Block a user