From b15aa83ff772e3443b20758d54f0a78df57690a2 Mon Sep 17 00:00:00 2001 From: borntolurk Date: Fri, 30 Jun 2023 18:52:02 +0200 Subject: [PATCH 1/2] Improve handing of safe area on iOS PWA --- files/assets/css/main.css | 18 ++++++++++++++++-- files/assets/js/mobile_navigation_bar.js | 6 ++++-- files/templates/mobile_navigation_bar.html | 2 +- files/templates/util/html_head.html | 5 +++-- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/files/assets/css/main.css b/files/assets/css/main.css index 27f5bb6fa..641fda7fb 100644 --- a/files/assets/css/main.css +++ b/files/assets/css/main.css @@ -7070,8 +7070,10 @@ body *::-webkit-scrollbar { } body > .container { - padding-left: 20px !important; - padding-right: 20px !important; + --safe-area-inset-left: env(safe-area-inset-left); + --safe-area-inset-right: env(safe-area-inset-right); + padding-left: calc(20px + var(--safe-area-inset-left)) !important; + padding-right: calc(20px + var(--safe-area-inset-right)) !important; } .emoji2 { @@ -7479,6 +7481,18 @@ th.disable-sort-click[disabled] { } } +@supports(padding: env(safe-area-inset-bottom)) { + #mobile-bottom-navigation-bar { + --safe-area-inset-left: env(safe-area-inset-left); + --safe-area-inset-right: env(safe-area-inset-right); + --safe-area-inset-bottom: env(safe-area-inset-bottom); + padding-top: 0.5rem; + padding-left: max(0.5rem, var(--safe-area-inset-left)); + padding-right: max(0.5rem, var(--safe-area-inset-right)); + padding-bottom: max(0.5rem, var(--safe-area-inset-bottom)); + } +} + #mobile-bottom-navigation-bar > button { overflow: visible } diff --git a/files/assets/js/mobile_navigation_bar.js b/files/assets/js/mobile_navigation_bar.js index 992f0b537..cd3dca56e 100644 --- a/files/assets/js/mobile_navigation_bar.js +++ b/files/assets/js/mobile_navigation_bar.js @@ -10,6 +10,8 @@ window.onscroll = function () { const navbar = document.getElementById("navbar"); + const bottomSafeAreaInset = parseInt(getComputedStyle(bottomBar).getPropertyValue("--safe-area-inset-bottom")) || 0; + if (bottomBar != null) { if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) < (document.body.offsetHeight - 65)) { bottomBar.style.bottom = "0px"; @@ -18,10 +20,10 @@ window.onscroll = function () { bottomBar.style.bottom = "0px"; } else if (prevScrollpos > currentScrollPos && (window.innerHeight + currentScrollPos) >= (document.body.offsetHeight - 65)) { - bottomBar.style.bottom = "-50px"; + bottomBar.style.bottom = `-${50 + bottomSafeAreaInset}px`; } else { - bottomBar.style.bottom = "-50px"; + bottomBar.style.bottom = `-${50 + bottomSafeAreaInset}px`; } } diff --git a/files/templates/mobile_navigation_bar.html b/files/templates/mobile_navigation_bar.html index 413ae03b4..b491d3b7b 100644 --- a/files/templates/mobile_navigation_bar.html +++ b/files/templates/mobile_navigation_bar.html @@ -1,5 +1,5 @@
-