diff --git a/apps/client/src/widgets/containers/root_container.ts b/apps/client/src/widgets/containers/root_container.ts index e81d867ef4..e460078a98 100644 --- a/apps/client/src/widgets/containers/root_container.ts +++ b/apps/client/src/widgets/containers/root_container.ts @@ -18,14 +18,12 @@ import FlexContainer from "./flex_container.js"; * - `#root-container.vertical-layout`, if the current layout is horizontal. */ export default class RootContainer extends FlexContainer { - private originalViewportHeight: number; constructor(isHorizontalLayout: boolean) { super(isHorizontalLayout ? "column" : "row"); this.id("root-widget"); this.css("height", "100dvh"); - this.originalViewportHeight = getViewportHeight(); } render(): JQuery { @@ -65,8 +63,12 @@ export default class RootContainer extends FlexContainer { } #onMobileResize() { - const currentViewportHeight = getViewportHeight(); - const isKeyboardOpened = (currentViewportHeight < this.originalViewportHeight); + const viewportHeight = window.visualViewport?.height ?? window.innerHeight; + const windowHeight = window.innerHeight; + + // If viewport is significantly smaller, keyboard is likely open + const isKeyboardOpened = windowHeight - viewportHeight > 150; + this.$widget.toggleClass("virtual-keyboard-opened", isKeyboardOpened); } @@ -115,6 +117,3 @@ export default class RootContainer extends FlexContainer { } } -function getViewportHeight() { - return window.visualViewport?.height ?? window.innerHeight; -}