diff options
Diffstat (limited to 'src/view/shell')
-rw-r--r-- | src/view/shell/Composer.web.tsx | 8 | ||||
-rw-r--r-- | src/view/shell/bottom-bar/BottomBarStyles.tsx | 4 | ||||
-rw-r--r-- | src/view/shell/bottom-bar/BottomBarWeb.tsx | 1 | ||||
-rw-r--r-- | src/view/shell/desktop/LeftNav.tsx | 5 | ||||
-rw-r--r-- | src/view/shell/desktop/RightNav.tsx | 5 | ||||
-rw-r--r-- | src/view/shell/index.web.tsx | 20 |
6 files changed, 28 insertions, 15 deletions
diff --git a/src/view/shell/Composer.web.tsx b/src/view/shell/Composer.web.tsx index ed64bc799..99e659d62 100644 --- a/src/view/shell/Composer.web.tsx +++ b/src/view/shell/Composer.web.tsx @@ -5,6 +5,7 @@ import {ComposePost} from '../com/composer/Composer' import {useComposerState} from 'state/shell/composer' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' import { EmojiPicker, EmojiPickerState, @@ -16,6 +17,8 @@ export function Composer({}: {winHeight: number}) { const pal = usePalette('default') const {isMobile} = useWebMediaQueries() const state = useComposerState() + const isActive = !!state + useWebBodyScrollLock(isActive) const [pickerState, setPickerState] = React.useState<EmojiPickerState>({ isOpen: false, @@ -40,7 +43,7 @@ export function Composer({}: {winHeight: number}) { // rendering // = - if (!state) { + if (!isActive) { return <View /> } @@ -75,7 +78,8 @@ export function Composer({}: {winHeight: number}) { const styles = StyleSheet.create({ mask: { - position: 'absolute', + // @ts-ignore + position: 'fixed', top: 0, left: 0, width: '100%', diff --git a/src/view/shell/bottom-bar/BottomBarStyles.tsx b/src/view/shell/bottom-bar/BottomBarStyles.tsx index ae9381440..f226406f5 100644 --- a/src/view/shell/bottom-bar/BottomBarStyles.tsx +++ b/src/view/shell/bottom-bar/BottomBarStyles.tsx @@ -12,6 +12,10 @@ export const styles = StyleSheet.create({ paddingLeft: 5, paddingRight: 10, }, + bottomBarWeb: { + // @ts-ignore web-only + position: 'fixed', + }, ctrl: { flex: 1, paddingTop: 13, diff --git a/src/view/shell/bottom-bar/BottomBarWeb.tsx b/src/view/shell/bottom-bar/BottomBarWeb.tsx index c5dc376b7..b330c4b80 100644 --- a/src/view/shell/bottom-bar/BottomBarWeb.tsx +++ b/src/view/shell/bottom-bar/BottomBarWeb.tsx @@ -57,6 +57,7 @@ export function BottomBarWeb() { <Animated.View style={[ styles.bottomBar, + styles.bottomBarWeb, pal.view, pal.border, {paddingBottom: clamp(safeAreaInsets.bottom, 15, 30)}, diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx index c84e86b95..b27898828 100644 --- a/src/view/shell/desktop/LeftNav.tsx +++ b/src/view/shell/desktop/LeftNav.tsx @@ -442,10 +442,11 @@ export function DesktopLeftNav() { const styles = StyleSheet.create({ leftNav: { - position: 'absolute', + // @ts-ignore web only + position: 'fixed', top: 10, // @ts-ignore web only - right: 'calc(50vw + 312px)', + left: 'calc(50vw - 300px - 220px - 20px)', width: 220, // @ts-ignore web only maxHeight: 'calc(100vh - 10px)', diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx index 842991d6f..328c527e4 100644 --- a/src/view/shell/desktop/RightNav.tsx +++ b/src/view/shell/desktop/RightNav.tsx @@ -177,9 +177,10 @@ function InviteCodes() { const styles = StyleSheet.create({ rightNav: { - position: 'absolute', // @ts-ignore web only - left: 'calc(50vw + 320px)', + position: 'fixed', + // @ts-ignore web only + left: 'calc(50vw + 300px + 20px)', width: 300, maxHeight: '100%', overflowY: 'auto', diff --git a/src/view/shell/index.web.tsx b/src/view/shell/index.web.tsx index 1ada883c9..76f4f5c9b 100644 --- a/src/view/shell/index.web.tsx +++ b/src/view/shell/index.web.tsx @@ -15,6 +15,7 @@ import {useAuxClick} from 'lib/hooks/useAuxClick' import {t} from '@lingui/macro' import {useIsDrawerOpen, useSetDrawerOpen} from '#/state/shell' import {useCloseAllActiveElements} from '#/state/util' +import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' import {Outlet as PortalOutlet} from '#/components/Portal' function ShellInner() { @@ -24,6 +25,7 @@ function ShellInner() { const navigator = useNavigation<NavigationProp>() const closeAllActiveElements = useCloseAllActiveElements() + useWebBodyScrollLock(isDrawerOpen) useAuxClick() useEffect(() => { @@ -34,12 +36,10 @@ function ShellInner() { }, [navigator, closeAllActiveElements]) return ( - <View style={[s.hContentRegion, {overflow: 'hidden'}]}> - <View style={s.hContentRegion}> - <ErrorBoundary> - <FlatNavigator /> - </ErrorBoundary> - </View> + <> + <ErrorBoundary> + <FlatNavigator /> + </ErrorBoundary> <Composer winHeight={0} /> <ModalsContainer /> <PortalOutlet /> @@ -55,7 +55,7 @@ function ShellInner() { </View> </TouchableOpacity> )} - </View> + </> ) } @@ -78,7 +78,8 @@ const styles = StyleSheet.create({ backgroundColor: colors.black, // TODO }, drawerMask: { - position: 'absolute', + // @ts-ignore web only + position: 'fixed', width: '100%', height: '100%', top: 0, @@ -87,7 +88,8 @@ const styles = StyleSheet.create({ }, drawerContainer: { display: 'flex', - position: 'absolute', + // @ts-ignore web only + position: 'fixed', top: 0, left: 0, height: '100%', |