From 520b3add0f8597c79706812c4819fb23a551becc Mon Sep 17 00:00:00 2001 From: Aman Harwara Date: Thu, 25 Aug 2022 15:01:44 +0530 Subject: [PATCH] fix: editor content being hidden under keyboard on mobile (#1410) --- packages/web/src/javascripts/App.tsx | 17 ++--------- .../ComponentView/ComponentView.tsx | 3 +- .../ContentListView/ContentList.tsx | 4 +-- .../ContentListView/ContentListView.tsx | 2 +- .../Components/Navigation/Navigation.tsx | 6 +++- .../NoteView/AutoresizingTextarea.tsx | 30 +++++++++++++++++++ .../Components/NoteView/NoteView.tsx | 8 ++--- .../Popover/PositionedPopoverContent.tsx | 5 ++++ .../Preferences/PreferencesView.tsx | 9 +++++- .../Components/Shared/ModalDialogButtons.tsx | 6 ++-- .../src/javascripts/Constants/ElementIDs.ts | 3 +- .../Hooks/useDisableBodyScrollOnMobile.tsx | 27 +++++++++++++++++ .../web/src/javascripts/Utils/IsMobile.ts | 28 ----------------- packages/web/src/javascripts/Utils/Utils.ts | 13 ++++++-- packages/web/src/javascripts/Utils/index.ts | 1 - packages/web/src/stylesheets/_columns.scss | 1 - packages/web/src/stylesheets/_editor.scss | 3 +- packages/web/src/stylesheets/_main.scss | 30 ++++++++++++------- 18 files changed, 124 insertions(+), 72 deletions(-) create mode 100644 packages/web/src/javascripts/Components/NoteView/AutoresizingTextarea.tsx create mode 100644 packages/web/src/javascripts/Hooks/useDisableBodyScrollOnMobile.tsx delete mode 100644 packages/web/src/javascripts/Utils/IsMobile.ts diff --git a/packages/web/src/javascripts/App.tsx b/packages/web/src/javascripts/App.tsx index 261a276a7..f7df52568 100644 --- a/packages/web/src/javascripts/App.tsx +++ b/packages/web/src/javascripts/App.tsx @@ -34,18 +34,13 @@ import { ApplicationGroup } from './Application/ApplicationGroup' import { WebOrDesktopDevice } from './Application/Device/WebOrDesktopDevice' import { WebApplication } from './Application/Application' import { createRoot, Root } from 'react-dom/client' +import { ElementIds } from './Constants/ElementIDs' let keyCount = 0 const getKey = () => { return keyCount++ } -const RootId = 'app-group-root' - -const setViewportHeight = () => { - document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`) -} - const startApplication: StartApplication = async function startApplication( defaultSyncServerHost: string, device: WebOrDesktopDevice, @@ -58,24 +53,18 @@ const startApplication: StartApplication = async function startApplication( let root: Root const onDestroy = () => { - const rootElement = document.getElementById(RootId) as HTMLElement + const rootElement = document.getElementById(ElementIds.RootId) as HTMLElement root.unmount() rootElement.remove() - window.removeEventListener('resize', setViewportHeight) - window.removeEventListener('orientationchange', setViewportHeight) renderApp() } const renderApp = () => { const rootElement = document.createElement('div') - rootElement.id = RootId + rootElement.id = ElementIds.RootId const appendedRootNode = document.body.appendChild(rootElement) root = createRoot(appendedRootNode) - setViewportHeight() - window.addEventListener('resize', setViewportHeight) - window.addEventListener('orientationchange', setViewportHeight) - disableIosTextFieldZoom() root.render( diff --git a/packages/web/src/javascripts/Components/ComponentView/ComponentView.tsx b/packages/web/src/javascripts/Components/ComponentView/ComponentView.tsx index 7407c01dd..1d271d06f 100644 --- a/packages/web/src/javascripts/Components/ComponentView/ComponentView.tsx +++ b/packages/web/src/javascripts/Components/ComponentView/ComponentView.tsx @@ -33,7 +33,7 @@ const VisibilityChangeKey = 'visibilitychange' const MSToWaitAfterIframeLoadToAvoidFlicker = 35 const ComponentView: FunctionComponent = ({ application, onLoad, componentViewer, requestReload }) => { - const iframeRef = useRef(null) + const iframeRef = useRef(null) const [loadTimeout, setLoadTimeout] = useState | undefined>(undefined) const [hasIssueLoading, setHasIssueLoading] = useState(false) @@ -200,6 +200,7 @@ const ComponentView: FunctionComponent = ({ application, onLoad, compone {error === ComponentViewerError.MissingUrl && } {component.uuid && isComponentValid && (