Skip to content

Commit fda4a9c

Browse files
authored
fix(iOS): fix header height in modal, add TestHeaderHeight (#3393)
## Description Fixes header height in modal with `headerShown: true`. Prior to this PR, header height was sometimes incorrect and did not update dynamically, e.g. when search bar was enabled with `hideWhenScrolling: true`. Adds `TestHeaderHeight` test screen. | before | after | | --- | --- | | <video src="https://github.com/user-attachments/assets/2fb62d71-91d8-41d1-9e21-d86e4fa8c19f" /> | <video src="https://github.com/user-attachments/assets/7e2b5431-fbc1-484a-9eb1-8bfcfab65f66" /> | ## Changes - pass `onHeaderHeightChange` callback to correct `Screen` - create `TestHeaderHeight` - extract `LongText` to shared components directory ## Test code and steps to reproduce Run `TestHeaderHeight`. Set `headerTransparent: true`, `presentation: modal`, `content: scrollView`, `searchBarPlacement: stacked`. Scroll up to see the search bar. Note header height values being updated. ## Checklist - [x] Included code example that can be used to test this change - [x] Ensured that CI passes
1 parent 10ffdf7 commit fda4a9c

File tree

8 files changed

+414
-150
lines changed

8 files changed

+414
-150
lines changed

apps/src/shared/LongText.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import React from 'react';
2+
import { Text } from 'react-native';
3+
4+
const lorem =
5+
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sed egestas felis. Proin laoreet eros a tellus elementum, quis euismod enim gravida. Morbi at arcu commodo, condimentum purus a, congue sapien. Nunc luctus molestie enim ut mattis. Pellentesque sollicitudin, arcu nec sodales gravida, tortor mauris dignissim urna, nec venenatis nibh ex ut odio. Donec rhoncus arcu eu pulvinar cursus. Sed id ullamcorper erat. Proin mollis a mi vitae posuere. Integer a pretium tellus, vel faucibus metus. Pellentesque non lorem ullamcorper, auctor tellus vulputate, eleifend metus. Aenean in semper erat. Ut arcu elit, semper et dolor eu, pharetra ornare dui. Donec ac condimentum tellus, sed consequat tortor. Etiam facilisis diam sit amet felis rhoncus aliquet. Vestibulum pharetra sapien in tellus pharetra, vel rhoncus ipsum pharetra. Mauris eget porttitor nulla. Vestibulum blandit neque in molestie laoreet. Aliquam semper risus sit amet augue hendrerit suscipit. Vivamus eleifend aliquam congue. Mauris id volutpat neque. Donec erat justo, dictum quis ultrices sit amet, fermentum vel augue. Donec ut velit sit amet mauris tincidunt tincidunt.';
6+
7+
interface LongTextProps {
8+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9+
wordCount?: number;
10+
}
11+
12+
export default function LongText({ size = 'md', wordCount }: LongTextProps) {
13+
const sizePresets = {
14+
xs: 100,
15+
sm: 250,
16+
md: 500,
17+
lg: 750,
18+
xl: 900,
19+
};
20+
21+
const baseWords = lorem.split(' ');
22+
const desiredCount = wordCount ?? sizePresets[size];
23+
24+
const repeatedWords = Array(Math.ceil(desiredCount / baseWords.length))
25+
.fill(baseWords)
26+
.flat()
27+
.slice(0, desiredCount);
28+
29+
const text = repeatedWords.join(' ');
30+
31+
return <Text>{text}</Text>;
32+
}

apps/src/tests/TestBottomTabs/tabs/Tab4.tsx

Lines changed: 2 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
NativeStackNavigationProp,
55
createNativeStackNavigator,
66
} from '@react-navigation/native-stack';
7-
import { Button, ScrollView, Text } from 'react-native';
7+
import { Button, ScrollView } from 'react-native';
8+
import LongText from '../../../shared/LongText';
89

910
type RouteParamList = {
1011
Screen1: undefined;
@@ -20,56 +21,6 @@ type StackNavigationProp = NavigationProp<RouteParamList>;
2021

2122
const Stack = createNativeStackNavigator<RouteParamList>();
2223

23-
export function LongText() {
24-
return (
25-
<Text>
26-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sed egestas
27-
felis. Proin laoreet eros a tellus elementum, quis euismod enim gravida.
28-
Morbi at arcu commodo, condimentum purus a, congue sapien. Nunc luctus
29-
molestie enim ut mattis. Pellentesque sollicitudin, arcu nec sodales
30-
gravida, tortor mauris dignissim urna, nec venenatis nibh ex ut odio.
31-
Donec rhoncus arcu eu pulvinar cursus. Sed id ullamcorper erat. Proin
32-
mollis a mi vitae posuere. Integer a pretium tellus, vel faucibus metus.
33-
Pellentesque non lorem ullamcorper, auctor tellus vulputate, eleifend
34-
metus. Aenean in semper erat. Ut arcu elit, semper et dolor eu, pharetra
35-
ornare dui. Donec ac condimentum tellus, sed consequat tortor. Etiam
36-
facilisis diam sit amet felis rhoncus aliquet. Vestibulum pharetra sapien
37-
in tellus pharetra, vel rhoncus ipsum pharetra. Mauris eget porttitor
38-
nulla. Vestibulum blandit neque in molestie laoreet. Aliquam semper risus
39-
sit amet augue hendrerit suscipit. Vivamus eleifend aliquam congue. Mauris
40-
id volutpat neque. Donec erat justo, dictum quis ultrices sit amet,
41-
fermentum vel augue. Donec ut velit sit amet mauris tincidunt tincidunt.
42-
Mauris et neque ipsum. Aenean vitae eros in risus aliquam dignissim
43-
efficitur at nisl. Duis eu mi mauris. Quisque sodales convallis velit, a
44-
mollis quam dictum a. Phasellus iaculis tempus orci, ac ultrices lorem
45-
faucibus at. Aliquam bibendum nibh eu nisi ultrices, at faucibus purus
46-
imperdiet. Proin eu enim porttitor, hendrerit risus quis, sagittis neque.
47-
Sed ligula lacus, placerat non erat vitae, porta sagittis ligula. Nam
48-
egestas malesuada lectus, vitae auctor lorem hendrerit in. Maecenas
49-
hendrerit porta leo et fringilla. Praesent scelerisque arcu at sapien
50-
convallis, eget maximus purus malesuada. Praesent malesuada, justo at
51-
suscipit ullamcorper, massa turpis laoreet velit, in vulputate urna felis
52-
at odio. Suspendisse vehicula pretium purus, sit amet egestas nisl
53-
malesuada eu. Sed sed rhoncus sapien, id porta nisl. Sed non mi tortor.
54-
Nullam risus ipsum, ullamcorper eu ligula a, ullamcorper molestie augue.
55-
Donec eu purus vel quam ultricies egestas eu vel lectus. Nullam ac nunc
56-
augue. Cras dolor mi, mollis rhoncus eros non, condimentum pretium sem.
57-
Suspendisse vehicula enim a metus aliquet consectetur. Curabitur vehicula
58-
gravida risus in facilisis. Ut eget sapien nisi. Sed pulvinar mi nec
59-
volutpat ullamcorper. Aenean vulputate justo nec sapien consectetur
60-
sagittis. Nunc pellentesque a arcu ac mattis. Mauris nec turpis nec erat
61-
dignissim commodo. Vivamus porta mollis ipsum non rutrum. Sed facilisis
62-
ante cursus nunc suscipit, non tristique mauris posuere. Donec eget nisi
63-
facilisis, fermentum quam ut, imperdiet sem. Sed sit amet metus ligula.
64-
Vestibulum placerat dignissim libero, sit amet semper justo vestibulum ut.
65-
Etiam eget sagittis elit. Fusce lobortis enim urna, a molestie nulla
66-
bibendum sit amet. Sed tellus sem, sodales nec tellus eget, eleifend
67-
finibus purus. Proin sollicitudin dolor a luctus elementum. Proin eu dui
68-
vestibulum arcu venenatis rutrum.
69-
</Text>
70-
);
71-
}
72-
7324
function Screen1({ navigation }: StackNavigationProp) {
7425
return (
7526
<ScrollView>

0 commit comments

Comments
 (0)