From 09dedc244d7fef8de94e32068c37c9e7f93c0fc7 Mon Sep 17 00:00:00 2001 From: Trevin Hofmann Date: Mon, 16 Dec 2024 08:22:27 -0600 Subject: [PATCH] fix: re-enable viewport-fit=cover and fix styles using env safe-area-insert (#2697) --- capacitor.config.ts | 1 - index.html | 2 +- src/components/AppComponent.tsx | 7 ++++++- src/components/ErrorMessage.tsx | 2 -- src/components/HamburgerMenu.tsx | 2 +- src/components/NavBar.tsx | 7 +++---- src/components/modals/ModalComponent.tsx | 3 ++- .../font-size-13-initial-load-1.png | Bin 14393 -> 14424 bytes .../font-size-22-initial-load-1.png | Bin 19050 -> 18732 bytes src/hooks/usePositionFixed.ts | 6 ++++-- 10 files changed, 17 insertions(+), 13 deletions(-) diff --git a/capacitor.config.ts b/capacitor.config.ts index edbbaecef26..35a76c6d6d5 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -25,7 +25,6 @@ const config: CapacitorConfig = { ...serverConfig, ios: { backgroundColor: '000000', - contentInset: 'always', }, plugins: { Keyboard: { diff --git a/index.html b/index.html index bae6853b085..c5da51276cf 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ --> diff --git a/src/components/AppComponent.tsx b/src/components/AppComponent.tsx index 94e7a789943..30ca2d4dbee 100644 --- a/src/components/AppComponent.tsx +++ b/src/components/AppComponent.tsx @@ -184,7 +184,12 @@ const AppComponent: FC = () => { const Modal = showModal ? modals[showModal] : null return ( -
+
diff --git a/src/components/ErrorMessage.tsx b/src/components/ErrorMessage.tsx index 70f486c2444..0f7d28547b8 100644 --- a/src/components/ErrorMessage.tsx +++ b/src/components/ErrorMessage.tsx @@ -2,7 +2,6 @@ import { FC, useRef } from 'react' import { useDispatch, useSelector } from 'react-redux' import { TransitionGroup } from 'react-transition-group' import { css } from '../../styled-system/css' -import { token } from '../../styled-system/tokens' import { errorActionCreator as error } from '../actions/error' import usePositionFixed from '../hooks/usePositionFixed' import CloseButton from './CloseButton' @@ -33,7 +32,6 @@ const ErrorMessage: FC = () => { })} style={{ ...positionFixedStyles, - top: `calc(${token('spacing.safeAreaTop')} + ${positionFixedStyles.top}px)`, }} > {value.toString()} diff --git a/src/components/HamburgerMenu.tsx b/src/components/HamburgerMenu.tsx index 1bd2f830eea..7514ec9cc68 100644 --- a/src/components/HamburgerMenu.tsx +++ b/src/components/HamburgerMenu.tsx @@ -88,7 +88,7 @@ const HamburgerMenu = () => { padding: `${paddingTop}px 15px 10px 15px`, // On macOS, if the user cancels a drag and then switches tabs, upon returning mouseup will fire at coordinates (0,0), triggering fastClick on any element located at (0,0). // Therefore, position the HamburgerMenu at top: 1px so that the sidebar is not accidentally opened on tab change. - top: positionFixedStyles.top + 1, + top: `calc(${positionFixedStyles.top} + 1px)`, }} {...fastClick(() => { // TODO: Why does the sidebar not open with fastClick or onTouchEnd without a setTimeout? diff --git a/src/components/NavBar.tsx b/src/components/NavBar.tsx index 3c2babde906..13f03f0d0d5 100644 --- a/src/components/NavBar.tsx +++ b/src/components/NavBar.tsx @@ -63,8 +63,9 @@ const NavBar = ({ position }: { position: string }) => { ...(!isTouch || !editing ? { position: 'sticky', - // cannot use safe-area-inset because of mobile Safari z-index issues - bottom: 0, + /* spacing.safeAreaBottom applies for rounded screens */ + bottom: 'calc(max(11px, token(spacing.safeAreaBottom)))', + marginBottom: '10px', } : undefined), })} @@ -96,8 +97,6 @@ const NavBar = ({ position }: { position: string }) => { width: '100%', display: 'flex', alignItems: 'flex-end', - /* rounded screens */ - paddingBottom: 'calc(max(10px, {spacing.safeAreaBottom}))', }), })} > diff --git a/src/components/modals/ModalComponent.tsx b/src/components/modals/ModalComponent.tsx index 0f0255dd0b9..786f7a12cad 100644 --- a/src/components/modals/ModalComponent.tsx +++ b/src/components/modals/ModalComponent.tsx @@ -89,10 +89,11 @@ class ModalComponent extends React.Component { padding: '10px 20px', margin: '-10px -20px', position: 'fixed', - top: 'calc(9px - 0.2em)', right: '11px', color: 'inherit', textDecoration: 'none', + /* spacing.safeAreaTop applies for rounded screens */ + top: 'calc(token(spacing.safeAreaTop) + 9px - 0.2em)', })} {...fastClick(this.close)} > diff --git a/src/e2e/puppeteer/__tests__/__image_snapshots__/render-thoughts/font-size-13-initial-load-1.png b/src/e2e/puppeteer/__tests__/__image_snapshots__/render-thoughts/font-size-13-initial-load-1.png index ec4fdf8c39c6a02b5212c8e8541d4ecdf15b5f19..45b0fc250a587c8f74c63eefca659945fe2fb2aa 100644 GIT binary patch literal 14424 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 F`)}@ZOn(3X literal 14393 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 literal 19050 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 Lax(e&#hd>FfQ-h# diff --git a/src/hooks/usePositionFixed.ts b/src/hooks/usePositionFixed.ts index ff344557db9..79d01607ead 100644 --- a/src/hooks/usePositionFixed.ts +++ b/src/hooks/usePositionFixed.ts @@ -1,5 +1,6 @@ /** Position fixed breaks in mobile Safari when the keyboard is up. This module provides functionality to emulate position:fixed by changing all top navigation to position:absolute and updating on scroll. */ import { useEffect } from 'react' +import { token } from '../../styled-system/tokens' import { isIOS, isSafari, isTouch } from '../browser' import * as selection from '../device/selection' import reactMinistore from '../stores/react-ministore' @@ -27,7 +28,7 @@ const initEventHandler = once(() => { const usePositionFixed = (): { position: 'fixed' | 'absolute' overflowX?: 'hidden' | 'visible' - top: number + top: string } => { const position = positionFixedStore.useState() const scrollTop = useScrollTop({ disabled: position === 'fixed' }) @@ -37,7 +38,8 @@ const usePositionFixed = (): { return { position: position ?? 'fixed', overflowX: position === 'absolute' ? 'hidden' : 'visible', - top: position === 'absolute' ? scrollTop : 0, + /* spacing.safeAreaTop applies for rounded screens */ + top: position === 'absolute' ? `${scrollTop}px` : token('spacing.safeAreaTop'), } }