@hero-design/rn 8.56.1 → 8.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +31 -0
- package/assets/fonts/hero-icons-mobile.ttf +0 -0
- package/es/index.js +5240 -4333
- package/lib/assets/fonts/hero-icons-mobile.ttf +0 -0
- package/lib/index.js +5239 -4332
- package/package.json +7 -6
- package/src/components/Button/StyledButton.tsx +16 -30
- package/src/components/Calendar/__tests__/index.spec.tsx +5 -5
- package/src/components/Carousel/CardCarousel.tsx +7 -10
- package/src/components/Carousel/__tests__/index.spec.tsx +14 -0
- package/src/components/DatePicker/__tests__/DatePickerCalendar.spec.tsx +32 -29
- package/src/components/Empty/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
- package/src/components/Error/__tests__/__snapshots__/index.spec.tsx.snap +4 -4
- package/src/components/Icon/HeroIcon/glyphMap.json +1 -1
- package/src/components/Icon/IconList.ts +4 -0
- package/src/components/PinInput/index.tsx +1 -1
- package/src/components/Tabs/SceneView.tsx +6 -4
- package/src/components/Tabs/ScrollableTabs.tsx +8 -2
- package/src/components/Tabs/{ScrollableTabsHeader.tsx → ScrollableTabsHeader/ScrollableTabsHeader.tsx} +73 -42
- package/src/components/Tabs/ScrollableTabsHeader/hooks/useInitHighlightedAnimation.ts +45 -0
- package/src/components/Tabs/ScrollableTabsHeader/hooks/useInitUnderlinedAnimation.ts +91 -0
- package/src/components/Tabs/StyledScrollableTabs.tsx +14 -3
- package/src/components/Tabs/__tests__/ScrollableTabsHeader.spec.tsx +7 -3
- package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabs.spec.tsx.snap +42 -6
- package/src/components/Tabs/__tests__/__snapshots__/ScrollableTabsHeader.spec.tsx.snap +623 -3
- package/src/components/Tabs/__tests__/useInitHighlightedAnimation.spec.tsx +56 -0
- package/src/components/Tabs/__tests__/useInitUnderlinedAnimation.spec.tsx +65 -0
- package/src/components/TextInput/__tests__/index.spec.tsx +148 -1
- package/src/components/TextInput/index.tsx +135 -57
- package/src/components/Toast/ToastContext.ts +20 -2
- package/src/components/Toast/ToastProvider.tsx +7 -4
- package/src/components/Typography/Body/__tests__/__snapshots__/StyledBody.tsx.snap +2 -2
- package/src/components/Typography/Body/__tests__/__snapshots__/index.spec.tsx.snap +2 -2
- package/src/theme/__tests__/__snapshots__/index.spec.ts.snap +1 -1
- package/src/theme/components/typography.ts +1 -1
- package/types/components/Carousel/CardCarousel.d.ts +1 -0
- package/types/components/Icon/IconList.d.ts +1 -1
- package/types/components/Icon/index.d.ts +1 -1
- package/types/components/Icon/utils.d.ts +1 -1
- package/types/components/Tabs/ScrollableTabs.d.ts +4 -1
- package/types/components/Tabs/{ScrollableTabsHeader.d.ts → ScrollableTabsHeader/ScrollableTabsHeader.d.ts} +7 -3
- package/types/components/Tabs/ScrollableTabsHeader/hooks/useInitHighlightedAnimation.d.ts +9 -0
- package/types/components/Tabs/ScrollableTabsHeader/hooks/useInitUnderlinedAnimation.d.ts +10 -0
- package/types/components/Tabs/StyledScrollableTabs.d.ts +5 -1
- package/types/components/Tabs/index.d.ts +1 -1
- package/types/components/TextInput/index.d.ts +29 -1
- package/types/components/Toast/ToastContext.d.ts +1 -0
|
@@ -1,26 +1,28 @@
|
|
|
1
|
+
import { useTheme } from '@emotion/react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import {
|
|
3
|
-
TouchableWithoutFeedback,
|
|
4
4
|
FlatList,
|
|
5
|
-
|
|
5
|
+
Platform,
|
|
6
6
|
StyleProp,
|
|
7
|
-
|
|
7
|
+
TouchableWithoutFeedback,
|
|
8
8
|
ViewProps,
|
|
9
|
+
ViewStyle,
|
|
9
10
|
} from 'react-native';
|
|
10
|
-
import {
|
|
11
|
+
import type { ItemType, TabType } from '..';
|
|
12
|
+
import Icon from '../../Icon';
|
|
13
|
+
import { isHeroIcon } from '../../Icon/utils';
|
|
14
|
+
import Typography from '../../Typography';
|
|
11
15
|
import {
|
|
12
16
|
HeaderTabItem,
|
|
13
|
-
|
|
17
|
+
HeaderTabItemIndicator,
|
|
14
18
|
HeaderTabItemOutline,
|
|
15
|
-
HeaderTabItemWrapper,
|
|
16
19
|
HeaderTabItemOutlineWrapper,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import TabWithBadge from './TabWithBadge';
|
|
20
|
+
HeaderTabItemWrapper,
|
|
21
|
+
HeaderTabWrapper,
|
|
22
|
+
} from '../StyledScrollableTabs';
|
|
23
|
+
import TabWithBadge from '../TabWithBadge';
|
|
24
|
+
import useInitHighlightedAnimation from './hooks/useInitHighlightedAnimation';
|
|
25
|
+
import useInitUnderlinedAnimation from './hooks/useInitUnderlinedAnimation';
|
|
24
26
|
|
|
25
27
|
const getTabItem = ({
|
|
26
28
|
item,
|
|
@@ -87,6 +89,10 @@ export interface ScrollableTabHeaderProps extends ViewProps {
|
|
|
87
89
|
right: number;
|
|
88
90
|
left: number;
|
|
89
91
|
};
|
|
92
|
+
/**
|
|
93
|
+
* Variant of the tab header
|
|
94
|
+
*/
|
|
95
|
+
variant?: 'underlined' | 'highlighted';
|
|
90
96
|
}
|
|
91
97
|
const ScrollableTabHeader = ({
|
|
92
98
|
onTabPress,
|
|
@@ -95,12 +101,25 @@ const ScrollableTabHeader = ({
|
|
|
95
101
|
barStyle,
|
|
96
102
|
testID,
|
|
97
103
|
insets = { top: 0, bottom: 0, right: 0, left: 0 },
|
|
104
|
+
variant = 'highlighted',
|
|
98
105
|
}: ScrollableTabHeaderProps) => {
|
|
99
|
-
const flatListRef = React.useRef<FlatList>(null);
|
|
100
106
|
const theme = useTheme();
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
107
|
+
const flatListRef = React.useRef<FlatList>(null);
|
|
108
|
+
|
|
109
|
+
// Init underlined animation data
|
|
110
|
+
const { underlinedTranslateX, underlinedOpacity } =
|
|
111
|
+
useInitUnderlinedAnimation({
|
|
112
|
+
tabsLength: tabs.length,
|
|
113
|
+
selectedIndex,
|
|
114
|
+
variant,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// Init highlighted animation data
|
|
118
|
+
const { tabsAnims } = useInitHighlightedAnimation({
|
|
119
|
+
selectedIndex,
|
|
120
|
+
tabsLength: tabs.length,
|
|
121
|
+
variant,
|
|
122
|
+
});
|
|
104
123
|
|
|
105
124
|
React.useEffect(() => {
|
|
106
125
|
const timeoutHandle: number | null = null;
|
|
@@ -111,19 +130,7 @@ const ScrollableTabHeader = ({
|
|
|
111
130
|
});
|
|
112
131
|
}
|
|
113
132
|
|
|
114
|
-
const animation = Animated.parallel([
|
|
115
|
-
...tabs.map((_, i) =>
|
|
116
|
-
Animated.timing(tabsAnims[i], {
|
|
117
|
-
toValue: i === selectedIndex ? 1 : 0,
|
|
118
|
-
duration: 150,
|
|
119
|
-
useNativeDriver: true,
|
|
120
|
-
})
|
|
121
|
-
),
|
|
122
|
-
]);
|
|
123
|
-
animation.start();
|
|
124
|
-
|
|
125
133
|
return () => {
|
|
126
|
-
animation.stop();
|
|
127
134
|
if (timeoutHandle) {
|
|
128
135
|
clearTimeout(timeoutHandle);
|
|
129
136
|
}
|
|
@@ -149,8 +156,20 @@ const ScrollableTabHeader = ({
|
|
|
149
156
|
100
|
|
150
157
|
);
|
|
151
158
|
}}
|
|
159
|
+
style={
|
|
160
|
+
// Border styles specified in contentContainerStyle don't work
|
|
161
|
+
// so they need to be placed here instead on Android.
|
|
162
|
+
Platform.OS === 'android'
|
|
163
|
+
? {
|
|
164
|
+
borderBottomColor: theme.__hd__.tabs.colors.headerBottom,
|
|
165
|
+
borderBottomWidth: theme.__hd__.tabs.sizes.indicator,
|
|
166
|
+
}
|
|
167
|
+
: undefined
|
|
168
|
+
}
|
|
152
169
|
contentContainerStyle={{
|
|
153
170
|
paddingHorizontal: theme.__hd__.tabs.space.flatListHorizontalPadding,
|
|
171
|
+
borderBottomColor: theme.__hd__.tabs.colors.headerBottom,
|
|
172
|
+
borderBottomWidth: theme.__hd__.tabs.sizes.indicator,
|
|
154
173
|
}}
|
|
155
174
|
renderItem={({ item: tab, index }) => {
|
|
156
175
|
const {
|
|
@@ -187,22 +206,34 @@ const ScrollableTabHeader = ({
|
|
|
187
206
|
testID={tabItemTestID}
|
|
188
207
|
>
|
|
189
208
|
<HeaderTabItem isFirstItem={index === 0}>
|
|
190
|
-
|
|
191
|
-
<
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
209
|
+
{variant === 'highlighted' && (
|
|
210
|
+
<HeaderTabItemOutlineWrapper>
|
|
211
|
+
<HeaderTabItemOutline
|
|
212
|
+
themeActive={active}
|
|
213
|
+
style={{
|
|
214
|
+
flex: 1,
|
|
215
|
+
transform: [
|
|
216
|
+
{
|
|
217
|
+
scaleX: outlineScale,
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
}}
|
|
221
|
+
/>
|
|
222
|
+
</HeaderTabItemOutlineWrapper>
|
|
223
|
+
)}
|
|
224
|
+
|
|
203
225
|
<HeaderTabItemWrapper>
|
|
204
226
|
<TabWithBadge config={badge} tabItem={tabItem} />
|
|
205
227
|
</HeaderTabItemWrapper>
|
|
228
|
+
|
|
229
|
+
{variant === 'underlined' && (
|
|
230
|
+
<HeaderTabItemIndicator
|
|
231
|
+
style={{
|
|
232
|
+
opacity: underlinedOpacity[index],
|
|
233
|
+
transform: [{ translateX: underlinedTranslateX[index] }],
|
|
234
|
+
}}
|
|
235
|
+
/>
|
|
236
|
+
)}
|
|
206
237
|
</HeaderTabItem>
|
|
207
238
|
</TouchableWithoutFeedback>
|
|
208
239
|
);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Animated, Platform } from 'react-native';
|
|
3
|
+
import { useAnimatedValueArray } from '../../utils';
|
|
4
|
+
|
|
5
|
+
const useInitHighlightedAnimation = ({
|
|
6
|
+
selectedIndex = 0,
|
|
7
|
+
tabsLength,
|
|
8
|
+
variant,
|
|
9
|
+
}: {
|
|
10
|
+
selectedIndex?: number;
|
|
11
|
+
tabsLength: number;
|
|
12
|
+
variant: 'underlined' | 'highlighted';
|
|
13
|
+
}) => {
|
|
14
|
+
const tabsAnims = useAnimatedValueArray(
|
|
15
|
+
Array.from({ length: tabsLength }).map((_, i) =>
|
|
16
|
+
i === selectedIndex ? 1 : 0
|
|
17
|
+
)
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
if (variant !== 'highlighted') {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const animation = Animated.parallel([
|
|
26
|
+
...Array.from({ length: tabsLength }).map((_, i) =>
|
|
27
|
+
Animated.timing(tabsAnims[i], {
|
|
28
|
+
toValue: i === selectedIndex ? 1 : 0,
|
|
29
|
+
duration: 150,
|
|
30
|
+
useNativeDriver: Platform.OS !== 'web',
|
|
31
|
+
})
|
|
32
|
+
),
|
|
33
|
+
]);
|
|
34
|
+
|
|
35
|
+
animation.start();
|
|
36
|
+
|
|
37
|
+
return () => {
|
|
38
|
+
animation.stop();
|
|
39
|
+
};
|
|
40
|
+
}, [selectedIndex]);
|
|
41
|
+
|
|
42
|
+
return { tabsAnims };
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default useInitHighlightedAnimation;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Animated, Easing, Platform } from 'react-native';
|
|
3
|
+
import { useAnimatedValueArray } from '../../utils';
|
|
4
|
+
|
|
5
|
+
const TRANSLATE_DISTANCE = 30;
|
|
6
|
+
|
|
7
|
+
const animateOpacity = (animatedValue: Animated.Value, toValue: number) => {
|
|
8
|
+
return Animated.timing(animatedValue, {
|
|
9
|
+
toValue,
|
|
10
|
+
duration: 150,
|
|
11
|
+
easing: Easing.ease,
|
|
12
|
+
useNativeDriver: Platform.OS !== 'web',
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const animateTranslateX = (animatedValue: Animated.Value, toValue: number) => {
|
|
17
|
+
return Animated.spring(animatedValue, {
|
|
18
|
+
toValue,
|
|
19
|
+
useNativeDriver: Platform.OS !== 'web',
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const useInitUnderlinedAnimation = ({
|
|
24
|
+
tabsLength,
|
|
25
|
+
selectedIndex = 0,
|
|
26
|
+
variant,
|
|
27
|
+
}: {
|
|
28
|
+
tabsLength: number;
|
|
29
|
+
selectedIndex?: number;
|
|
30
|
+
variant: 'underlined' | 'highlighted';
|
|
31
|
+
}) => {
|
|
32
|
+
const previousIndex = React.useRef<number>(0);
|
|
33
|
+
const translateXAnims = useAnimatedValueArray(
|
|
34
|
+
Array.from({ length: tabsLength }).map(() => 0)
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const opacityAnims = useAnimatedValueArray(
|
|
38
|
+
Array.from({ length: tabsLength }).map((_, i) =>
|
|
39
|
+
selectedIndex !== undefined && selectedIndex === i ? 1 : 0
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const underlinedTranslateX = translateXAnims.map((anim) =>
|
|
44
|
+
anim.interpolate({
|
|
45
|
+
inputRange: [-1, 0, 1],
|
|
46
|
+
outputRange: [-TRANSLATE_DISTANCE, 0, TRANSLATE_DISTANCE],
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const underlinedOpacity = opacityAnims.map((anim) =>
|
|
51
|
+
anim.interpolate({
|
|
52
|
+
inputRange: [0, 1],
|
|
53
|
+
outputRange: [0, 1],
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
React.useEffect(() => {
|
|
58
|
+
if (
|
|
59
|
+
variant === 'underlined' &&
|
|
60
|
+
selectedIndex !== undefined &&
|
|
61
|
+
previousIndex.current !== selectedIndex
|
|
62
|
+
) {
|
|
63
|
+
// Prepare for translateX into the right position.
|
|
64
|
+
if (selectedIndex > previousIndex.current) {
|
|
65
|
+
translateXAnims[selectedIndex].setValue(-1);
|
|
66
|
+
} else {
|
|
67
|
+
translateXAnims[selectedIndex].setValue(1);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Split animations into 2 sets of parallel animations to prevent race condition.
|
|
71
|
+
Animated.parallel([
|
|
72
|
+
animateOpacity(opacityAnims[selectedIndex], 1),
|
|
73
|
+
animateTranslateX(translateXAnims[selectedIndex], 0),
|
|
74
|
+
]).start();
|
|
75
|
+
|
|
76
|
+
Animated.parallel([
|
|
77
|
+
animateOpacity(opacityAnims[previousIndex.current], 0),
|
|
78
|
+
animateTranslateX(
|
|
79
|
+
translateXAnims[previousIndex.current],
|
|
80
|
+
selectedIndex > previousIndex.current ? 1 : -1
|
|
81
|
+
),
|
|
82
|
+
]).start();
|
|
83
|
+
|
|
84
|
+
previousIndex.current = selectedIndex;
|
|
85
|
+
}
|
|
86
|
+
}, [selectedIndex, variant, opacityAnims, translateXAnims]);
|
|
87
|
+
|
|
88
|
+
return { underlinedTranslateX, underlinedOpacity };
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export default useInitUnderlinedAnimation;
|
|
@@ -17,10 +17,8 @@ const ContentWrapper = styled(PagerView)({
|
|
|
17
17
|
|
|
18
18
|
const HeaderTabWrapper = styled(View)<{
|
|
19
19
|
themeInsets: { top: number; right: number; bottom: number; left: number };
|
|
20
|
-
}>(({
|
|
20
|
+
}>(({ themeInsets }) => ({
|
|
21
21
|
paddingHorizontal: Math.max(themeInsets.left, themeInsets.right),
|
|
22
|
-
borderBottomColor: theme.__hd__.tabs.colors.headerBottom,
|
|
23
|
-
borderBottomWidth: theme.__hd__.tabs.borderWidths.headerBottom,
|
|
24
22
|
}));
|
|
25
23
|
|
|
26
24
|
const HeaderTabItem = styled(Animated.View)<{ isFirstItem?: boolean }>(
|
|
@@ -47,6 +45,18 @@ const HeaderTabItemOutline = styled(Animated.View)<{ themeActive: boolean }>(
|
|
|
47
45
|
const HeaderTabItemWrapper = styled(View)(({ theme }) => ({
|
|
48
46
|
paddingHorizontal: theme.__hd__.tabs.space.outlineHorizontalPadding,
|
|
49
47
|
paddingVertical: theme.__hd__.tabs.space.outlineVerticalPadding,
|
|
48
|
+
position: 'relative',
|
|
49
|
+
justifyContent: 'center',
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
const HeaderTabItemIndicator = styled(Animated.View)(({ theme }) => ({
|
|
54
|
+
width: '100%',
|
|
55
|
+
height: theme.__hd__.tabs.sizes.indicator,
|
|
56
|
+
position: 'absolute',
|
|
57
|
+
bottom: theme.__hd__.tabs.space.tabIndicatorBottom,
|
|
58
|
+
zIndex: 999,
|
|
59
|
+
backgroundColor: theme.__hd__.tabs.colors.indicator,
|
|
50
60
|
}));
|
|
51
61
|
|
|
52
62
|
export {
|
|
@@ -58,4 +68,5 @@ export {
|
|
|
58
68
|
HeaderTabItemOutlineWrapper,
|
|
59
69
|
HeaderTabItemOutline,
|
|
60
70
|
HeaderTabItemWrapper,
|
|
71
|
+
HeaderTabItemIndicator,
|
|
61
72
|
};
|
|
@@ -4,7 +4,7 @@ import { fireEvent } from '@testing-library/react-native';
|
|
|
4
4
|
import { SafeAreaProvider } from 'react-native-safe-area-context';
|
|
5
5
|
import type { ComponentProps } from 'react';
|
|
6
6
|
import renderWithTheme from '../../../testHelpers/renderWithTheme';
|
|
7
|
-
import ScrollableTabsHeader from '../ScrollableTabsHeader';
|
|
7
|
+
import ScrollableTabsHeader from '../ScrollableTabsHeader/ScrollableTabsHeader';
|
|
8
8
|
import type { TabType } from '..';
|
|
9
9
|
|
|
10
10
|
const TestTabsComponent = (
|
|
@@ -59,10 +59,14 @@ const TestTabsComponent = (
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
describe('ScrollableTabsHeader', () => {
|
|
62
|
-
it
|
|
62
|
+
it.each`
|
|
63
|
+
variant
|
|
64
|
+
${'underlined'}
|
|
65
|
+
${'highlighted'}
|
|
66
|
+
`('$variant variant renders correctly', ({ variant }) => {
|
|
63
67
|
const onTabPress = jest.fn();
|
|
64
68
|
const { getByTestId, getByText, toJSON } = renderWithTheme(
|
|
65
|
-
<TestTabsComponent onTabPress={onTabPress} />
|
|
69
|
+
<TestTabsComponent variant={variant} onTabPress={onTabPress} />
|
|
66
70
|
);
|
|
67
71
|
|
|
68
72
|
expect(toJSON()).toMatchSnapshot();
|
|
@@ -128,8 +128,6 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
128
128
|
style={
|
|
129
129
|
[
|
|
130
130
|
{
|
|
131
|
-
"borderBottomColor": "#e8e9ea",
|
|
132
|
-
"borderBottomWidth": 2,
|
|
133
131
|
"paddingHorizontal": 0,
|
|
134
132
|
},
|
|
135
133
|
undefined,
|
|
@@ -147,6 +145,8 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
147
145
|
<RCTScrollView
|
|
148
146
|
contentContainerStyle={
|
|
149
147
|
{
|
|
148
|
+
"borderBottomColor": "#e8e9ea",
|
|
149
|
+
"borderBottomWidth": 2,
|
|
150
150
|
"paddingHorizontal": 8,
|
|
151
151
|
}
|
|
152
152
|
}
|
|
@@ -288,8 +288,11 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
288
288
|
style={
|
|
289
289
|
[
|
|
290
290
|
{
|
|
291
|
+
"alignItems": "center",
|
|
292
|
+
"justifyContent": "center",
|
|
291
293
|
"paddingHorizontal": 8,
|
|
292
294
|
"paddingVertical": 4,
|
|
295
|
+
"position": "relative",
|
|
293
296
|
},
|
|
294
297
|
undefined,
|
|
295
298
|
]
|
|
@@ -399,8 +402,11 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
399
402
|
style={
|
|
400
403
|
[
|
|
401
404
|
{
|
|
405
|
+
"alignItems": "center",
|
|
406
|
+
"justifyContent": "center",
|
|
402
407
|
"paddingHorizontal": 8,
|
|
403
408
|
"paddingVertical": 4,
|
|
409
|
+
"position": "relative",
|
|
404
410
|
},
|
|
405
411
|
undefined,
|
|
406
412
|
]
|
|
@@ -504,8 +510,11 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
504
510
|
style={
|
|
505
511
|
[
|
|
506
512
|
{
|
|
513
|
+
"alignItems": "center",
|
|
514
|
+
"justifyContent": "center",
|
|
507
515
|
"paddingHorizontal": 8,
|
|
508
516
|
"paddingVertical": 4,
|
|
517
|
+
"position": "relative",
|
|
509
518
|
},
|
|
510
519
|
undefined,
|
|
511
520
|
]
|
|
@@ -636,8 +645,11 @@ exports[`Tabs.Scroll lazy not render lazy screen: xxx 1`] = `
|
|
|
636
645
|
style={
|
|
637
646
|
[
|
|
638
647
|
{
|
|
648
|
+
"alignItems": "center",
|
|
649
|
+
"justifyContent": "center",
|
|
639
650
|
"paddingHorizontal": 8,
|
|
640
651
|
"paddingVertical": 4,
|
|
652
|
+
"position": "relative",
|
|
641
653
|
},
|
|
642
654
|
undefined,
|
|
643
655
|
]
|
|
@@ -1032,8 +1044,6 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1032
1044
|
style={
|
|
1033
1045
|
[
|
|
1034
1046
|
{
|
|
1035
|
-
"borderBottomColor": "#e8e9ea",
|
|
1036
|
-
"borderBottomWidth": 2,
|
|
1037
1047
|
"paddingHorizontal": 0,
|
|
1038
1048
|
},
|
|
1039
1049
|
undefined,
|
|
@@ -1051,6 +1061,8 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1051
1061
|
<RCTScrollView
|
|
1052
1062
|
contentContainerStyle={
|
|
1053
1063
|
{
|
|
1064
|
+
"borderBottomColor": "#e8e9ea",
|
|
1065
|
+
"borderBottomWidth": 2,
|
|
1054
1066
|
"paddingHorizontal": 8,
|
|
1055
1067
|
}
|
|
1056
1068
|
}
|
|
@@ -1192,8 +1204,11 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1192
1204
|
style={
|
|
1193
1205
|
[
|
|
1194
1206
|
{
|
|
1207
|
+
"alignItems": "center",
|
|
1208
|
+
"justifyContent": "center",
|
|
1195
1209
|
"paddingHorizontal": 8,
|
|
1196
1210
|
"paddingVertical": 4,
|
|
1211
|
+
"position": "relative",
|
|
1197
1212
|
},
|
|
1198
1213
|
undefined,
|
|
1199
1214
|
]
|
|
@@ -1303,8 +1318,11 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1303
1318
|
style={
|
|
1304
1319
|
[
|
|
1305
1320
|
{
|
|
1321
|
+
"alignItems": "center",
|
|
1322
|
+
"justifyContent": "center",
|
|
1306
1323
|
"paddingHorizontal": 8,
|
|
1307
1324
|
"paddingVertical": 4,
|
|
1325
|
+
"position": "relative",
|
|
1308
1326
|
},
|
|
1309
1327
|
undefined,
|
|
1310
1328
|
]
|
|
@@ -1408,8 +1426,11 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1408
1426
|
style={
|
|
1409
1427
|
[
|
|
1410
1428
|
{
|
|
1429
|
+
"alignItems": "center",
|
|
1430
|
+
"justifyContent": "center",
|
|
1411
1431
|
"paddingHorizontal": 8,
|
|
1412
1432
|
"paddingVertical": 4,
|
|
1433
|
+
"position": "relative",
|
|
1413
1434
|
},
|
|
1414
1435
|
undefined,
|
|
1415
1436
|
]
|
|
@@ -1540,8 +1561,11 @@ exports[`Tabs.Scroll renders correctly 1`] = `
|
|
|
1540
1561
|
style={
|
|
1541
1562
|
[
|
|
1542
1563
|
{
|
|
1564
|
+
"alignItems": "center",
|
|
1565
|
+
"justifyContent": "center",
|
|
1543
1566
|
"paddingHorizontal": 8,
|
|
1544
1567
|
"paddingVertical": 4,
|
|
1568
|
+
"position": "relative",
|
|
1545
1569
|
},
|
|
1546
1570
|
undefined,
|
|
1547
1571
|
]
|
|
@@ -1936,8 +1960,6 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
1936
1960
|
style={
|
|
1937
1961
|
[
|
|
1938
1962
|
{
|
|
1939
|
-
"borderBottomColor": "#e8e9ea",
|
|
1940
|
-
"borderBottomWidth": 2,
|
|
1941
1963
|
"paddingHorizontal": 0,
|
|
1942
1964
|
},
|
|
1943
1965
|
undefined,
|
|
@@ -1955,6 +1977,8 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
1955
1977
|
<RCTScrollView
|
|
1956
1978
|
contentContainerStyle={
|
|
1957
1979
|
{
|
|
1980
|
+
"borderBottomColor": "#e8e9ea",
|
|
1981
|
+
"borderBottomWidth": 2,
|
|
1958
1982
|
"paddingHorizontal": 8,
|
|
1959
1983
|
}
|
|
1960
1984
|
}
|
|
@@ -2096,8 +2120,11 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
2096
2120
|
style={
|
|
2097
2121
|
[
|
|
2098
2122
|
{
|
|
2123
|
+
"alignItems": "center",
|
|
2124
|
+
"justifyContent": "center",
|
|
2099
2125
|
"paddingHorizontal": 8,
|
|
2100
2126
|
"paddingVertical": 4,
|
|
2127
|
+
"position": "relative",
|
|
2101
2128
|
},
|
|
2102
2129
|
undefined,
|
|
2103
2130
|
]
|
|
@@ -2207,8 +2234,11 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
2207
2234
|
style={
|
|
2208
2235
|
[
|
|
2209
2236
|
{
|
|
2237
|
+
"alignItems": "center",
|
|
2238
|
+
"justifyContent": "center",
|
|
2210
2239
|
"paddingHorizontal": 8,
|
|
2211
2240
|
"paddingVertical": 4,
|
|
2241
|
+
"position": "relative",
|
|
2212
2242
|
},
|
|
2213
2243
|
undefined,
|
|
2214
2244
|
]
|
|
@@ -2312,8 +2342,11 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
2312
2342
|
style={
|
|
2313
2343
|
[
|
|
2314
2344
|
{
|
|
2345
|
+
"alignItems": "center",
|
|
2346
|
+
"justifyContent": "center",
|
|
2315
2347
|
"paddingHorizontal": 8,
|
|
2316
2348
|
"paddingVertical": 4,
|
|
2349
|
+
"position": "relative",
|
|
2317
2350
|
},
|
|
2318
2351
|
undefined,
|
|
2319
2352
|
]
|
|
@@ -2444,8 +2477,11 @@ exports[`useIsFocused renders correctly 1`] = `
|
|
|
2444
2477
|
style={
|
|
2445
2478
|
[
|
|
2446
2479
|
{
|
|
2480
|
+
"alignItems": "center",
|
|
2481
|
+
"justifyContent": "center",
|
|
2447
2482
|
"paddingHorizontal": 8,
|
|
2448
2483
|
"paddingVertical": 4,
|
|
2484
|
+
"position": "relative",
|
|
2449
2485
|
},
|
|
2450
2486
|
undefined,
|
|
2451
2487
|
]
|