From fbd95892b5b4597f6a76fe4c49794401d6e76655 Mon Sep 17 00:00:00 2001 From: suddenlyoranges Date: Thu, 9 Apr 2026 22:44:45 +0100 Subject: [PATCH] updated screens added keyboard avoiding view to avoid blocking keyboard --- src/components/layout/Screen.js | 56 +++++++++++++++++---------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/src/components/layout/Screen.js b/src/components/layout/Screen.js index b424220..e0570d3 100644 --- a/src/components/layout/Screen.js +++ b/src/components/layout/Screen.js @@ -1,11 +1,11 @@ -import {StatusBar} from 'expo-status-bar'; -import {StyleSheet, View} from 'react-native'; -import {useNavigation, useRoute} from '@react-navigation/native'; -import {useSafeAreaInsets} from 'react-native-safe-area-context'; -import TopNavbar from './TopNavbar'; -import BottomNavbar from './BottomNavbar'; +import { StatusBar } from "expo-status-bar"; +import { KeyboardAvoidingView, Platform, StyleSheet, View } from "react-native"; +import { useNavigation, useRoute } from "@react-navigation/native"; +import { useSafeAreaInsets } from "react-native-safe-area-context"; +import TopNavbar from "./TopNavbar"; +import BottomNavbar from "./BottomNavbar"; -const Screen = ({children, style, showBack = false}) => { +const Screen = ({ children, style, showBack = false }) => { // Initialisation ------------- const navigation = useNavigation(); @@ -13,33 +13,34 @@ const Screen = ({children, style, showBack = false}) => { const insets = useSafeAreaInsets(); const titleMap = { - LeaderboardScreen: 'Leaderboard', - TeamScreen: 'Current Team', - MapScreen: 'Map', - GameSettingsScreen: 'Game Settings', - GameSelectionScreen: 'Games', - DepartmentSettingsScreen: 'Department Settings', - PlayersScreen: 'Players', - ExpandedMapScreen: 'Map View', - GlobalEventsScreen: 'Global Events', - GlobalMapScreen: 'Global Map', - GlobalCacheViewScreen: 'Cache Details', - GlobalLeaderboardScreen: 'Global Leaderboard', - GlobalProfileScreen: 'Global Profile', + LeaderboardScreen: "Leaderboard", + TeamScreen: "Current Team", + MapScreen: "Map", + GameSettingsScreen: "Game Settings", + GameSelectionScreen: "Games", + DepartmentSettingsScreen: "Department Settings", + PlayersScreen: "Players", + ExpandedMapScreen: "Map View", + GlobalEventsScreen: "Global Events", + GlobalMapScreen: "Global Map", + GlobalCacheViewScreen: "Cache Details", + GlobalLeaderboardScreen: "Global Leaderboard", + GlobalProfileScreen: "Global Profile", }; // State ---------------------- const routeName = route.name; - const isAuthScreen = routeName === 'LoginScreen' || routeName === 'RegisterScreen'; - const isGlobalRoute = routeName.startsWith('Global'); - const pageTitle = titleMap[routeName] || 'Treasure Hunt'; + const isAuthScreen = + routeName === "LoginScreen" || routeName === "RegisterScreen"; + const isGlobalRoute = routeName.startsWith("Global"); + const pageTitle = titleMap[routeName] || "Treasure Hunt"; // Handlers ------------------- // View ----------------------- return ( - { paddingBottom: insets.bottom, }, ]} + behavior={Platform.OS === "ios" ? "padding" : "height"} > {!isAuthScreen && ( { /> )} - + ); }; const styles = StyleSheet.create({ screen: { flex: 1, - backgroundColor: '#1e1e2e', + backgroundColor: "#1e1e2e", }, content: { flex: 1, padding: 15, zIndex: 1, - overflow: 'hidden', + overflow: "hidden", }, });