Keep service mode full-bleed on iOS and hide the player chrome behind it
This commit is contained in:
@@ -2261,6 +2261,9 @@ function enterServiceMode(pl) {
|
|||||||
}
|
}
|
||||||
const el = $('serviceMode');
|
const el = $('serviceMode');
|
||||||
if (el) el.classList.remove('hidden');
|
if (el) el.classList.remove('hidden');
|
||||||
|
// Hides the mini-bar / bottom-nav / sidebar for as long as the overlay is up
|
||||||
|
// (see .service-open in styles.css).
|
||||||
|
document.body.classList.add('service-open');
|
||||||
updateServiceMode();
|
updateServiceMode();
|
||||||
acquireWakeLock();
|
acquireWakeLock();
|
||||||
}
|
}
|
||||||
@@ -2268,6 +2271,7 @@ function enterServiceMode(pl) {
|
|||||||
function exitServiceMode() {
|
function exitServiceMode() {
|
||||||
const el = $('serviceMode');
|
const el = $('serviceMode');
|
||||||
if (el) el.classList.add('hidden');
|
if (el) el.classList.add('hidden');
|
||||||
|
document.body.classList.remove('service-open');
|
||||||
releaseWakeLock();
|
releaseWakeLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2540,14 +2540,20 @@ input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.25); }
|
|||||||
|
|
||||||
/* ===================== Service Mode (Set-List View) ===================== */
|
/* ===================== Service Mode (Set-List View) ===================== */
|
||||||
.service-mode {
|
.service-mode {
|
||||||
|
/* Sized by inset alone — deliberately NOT `width: 100vw`. On iOS a fixed
|
||||||
|
element that reaches past the viewport (the off-canvas .sidebar, which
|
||||||
|
escapes body's overflow:hidden) makes Safari widen the layout viewport and
|
||||||
|
shrink-to-fit the page, but vw units keep resolving against the ORIGINAL
|
||||||
|
width. A 100vw overlay then covers only ~90% of the screen and the app
|
||||||
|
shows through on the right. left/right:0 resolve against the widened
|
||||||
|
containing block, so the overlay stays full-bleed either way. */
|
||||||
position: fixed;
|
position: fixed;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
width: 100vw;
|
min-height: 100dvh;
|
||||||
height: 100vh;
|
|
||||||
height: 100dvh;
|
|
||||||
background: var(--bg);
|
background: var(--bg);
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
z-index: 110;
|
/* Above .bottom-nav (310) and .mini-bar (300); modals (400) still win. */
|
||||||
|
z-index: 320;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -2769,6 +2775,18 @@ input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.25); }
|
|||||||
transform: scale(0.95);
|
transform: scale(0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* While the set-list overlay is up it owns the screen: the mini now-playing
|
||||||
|
bar and the bottom nav duplicate controls service mode already shows, and
|
||||||
|
both sit above it in the stacking order. The off-canvas sidebar is dropped
|
||||||
|
too so no fixed element reaches past the viewport to trigger the iOS
|
||||||
|
layout-viewport widening described on .service-mode. */
|
||||||
|
body.service-open .mini-bar,
|
||||||
|
body.service-open .bottom-nav,
|
||||||
|
body.service-open .sidebar,
|
||||||
|
body.service-open .sidebar-backdrop {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* Phones — the flat 28px gutters left a narrow centred column on a 390px
|
/* Phones — the flat 28px gutters left a narrow centred column on a 390px
|
||||||
screen, so service mode never looked full-bleed in the iOS PWA. Pull the
|
screen, so service mode never looked full-bleed in the iOS PWA. Pull the
|
||||||
gutters in to the safe-area edge and scale type/controls off the viewport
|
gutters in to the safe-area edge and scale type/controls off the viewport
|
||||||
|
|||||||
Reference in New Issue
Block a user