diff --git a/example/bare/src/screens/DetailScreen.tsx b/example/bare/src/screens/DetailScreen.tsx index 87bf71c..c8a7e29 100644 --- a/example/bare/src/screens/DetailScreen.tsx +++ b/example/bare/src/screens/DetailScreen.tsx @@ -1,4 +1,5 @@ import type { NativeStackScreenProps } from '@react-navigation/native-stack'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { MarkerDetailScreen } from '@lugg/shared-example'; import type { RootStackParamList } from '../App'; @@ -6,5 +7,7 @@ import type { RootStackParamList } from '../App'; type Props = NativeStackScreenProps; export function DetailScreen({ route }: Props) { - return ; + const { bottom } = useSafeAreaInsets(); + + return ; } diff --git a/example/expo/app/detail.tsx b/example/expo/app/detail.tsx index f4a3835..201acaf 100644 --- a/example/expo/app/detail.tsx +++ b/example/expo/app/detail.tsx @@ -1,7 +1,10 @@ import { useLocalSearchParams } from 'expo-router'; +import { useSafeAreaInsets } from 'react-native-safe-area-context'; import { MarkerDetailScreen } from '@lugg/shared-example'; export default function DetailScreen() { const { name } = useLocalSearchParams<{ name: string }>(); - return ; + const { bottom } = useSafeAreaInsets(); + + return ; } diff --git a/example/shared/src/screens/MarkerDetailScreen.tsx b/example/shared/src/screens/MarkerDetailScreen.tsx index a7840d4..7ec07fa 100644 --- a/example/shared/src/screens/MarkerDetailScreen.tsx +++ b/example/shared/src/screens/MarkerDetailScreen.tsx @@ -16,14 +16,17 @@ import { interface MarkerDetailScreenProps { name: string; + bottomInset?: number; } const CARD_HEIGHT = 200; -const CARD_BOTTOM = sizes.xl * 3; const formatCoordinate = (value: number) => value.toFixed(4); -export const MarkerDetailScreen = ({ name }: MarkerDetailScreenProps) => { +export const MarkerDetailScreen = ({ + name, + bottomInset = 0, +}: MarkerDetailScreenProps) => { const { colors } = useTheme(); const { width, height } = useWindowDimensions(); const apiKey = process.env.GOOGLE_MAPS_API_KEY; @@ -31,6 +34,14 @@ export const MarkerDetailScreen = ({ name }: MarkerDetailScreenProps) => { Platform.OS === 'ios' ? 'apple' : 'google' ); + const cardBottom = bottomInset + sizes.lg; + const edgeInsets = { + top: 0, + left: 0, + right: 0, + bottom: cardBottom + CARD_HEIGHT, + }; + const marker = INITIAL_MARKERS.find((m) => m.name === name); const place = PLACES.find((p) => p.name === name); @@ -42,8 +53,9 @@ export const MarkerDetailScreen = ({ name }: MarkerDetailScreenProps) => { ? fittedCamera( placeCoordinates(place), provider, - { width, height: height - CARD_BOTTOM - CARD_HEIGHT }, - sizes.xl + { width, height }, + sizes.xl, + edgeInsets ) : { coordinate, zoom: 15 }; @@ -58,12 +70,7 @@ export const MarkerDetailScreen = ({ name }: MarkerDetailScreenProps) => { staticKey={name} initialCoordinate={camera.coordinate} initialZoom={camera.zoom} - edgeInsets={{ - top: 0, - left: 0, - right: 0, - bottom: CARD_BOTTOM + CARD_HEIGHT, - }} + edgeInsets={edgeInsets} > {place ? ( <> @@ -76,7 +83,10 @@ export const MarkerDetailScreen = ({ name }: MarkerDetailScreenProps) => {