react-native-animated-header-flat-list 1.6.2 → 1.6.4
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/lib/module/components/AnimatedHeaderFlatList.js +32 -12
- package/lib/module/components/AnimatedHeaderFlatList.js.map +1 -1
- package/lib/typescript/src/components/AnimatedHeaderFlatList.d.ts +4 -4
- package/lib/typescript/src/components/AnimatedHeaderFlatList.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/AnimatedHeaderFlatList.tsx +46 -22
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { forwardRef } from 'react';
|
|
3
|
+
import { useLayoutEffect, useCallback, useMemo, forwardRef } from 'react';
|
|
4
4
|
import { StatusBar, StyleSheet, View } from 'react-native';
|
|
5
|
-
import { useLayoutEffect, useCallback, useMemo } from 'react';
|
|
6
5
|
import Animated from 'react-native-reanimated';
|
|
6
|
+
import { useNavigation } from '@react-navigation/native';
|
|
7
7
|
import { useAnimatedHeaderFlatListAnimatedStyles } from "../hooks/useAnimatedHeaderFlatListAnimatedStyles.js";
|
|
8
8
|
import { getFontSizeFromStyle } from "../utils/styleUtils.js";
|
|
9
|
-
import { useNavigation } from '@react-navigation/native';
|
|
10
9
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
11
10
|
const HEADER_ITEM = 'REACT_NATIVE_ANIMATED_HEADER_FLAT_LIST_HEADER';
|
|
12
11
|
function AnimatedHeaderFlatListInner({
|
|
@@ -44,10 +43,13 @@ function AnimatedHeaderFlatListInner({
|
|
|
44
43
|
navigationTitleTranslateX,
|
|
45
44
|
navigationTitleTranslateY
|
|
46
45
|
});
|
|
47
|
-
const navigationTitle = useCallback(() => /*#__PURE__*/_jsx(Animated.
|
|
48
|
-
style: [
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
const navigationTitle = useCallback(() => /*#__PURE__*/_jsx(Animated.View, {
|
|
47
|
+
style: [styles.navigationTitleContainer, navigationTitleAnimatedStyle],
|
|
48
|
+
children: /*#__PURE__*/_jsx(Animated.Text, {
|
|
49
|
+
style: navigationTitleStyle,
|
|
50
|
+
numberOfLines: 1,
|
|
51
|
+
children: title
|
|
52
|
+
})
|
|
51
53
|
}), [navigationTitleAnimatedStyle, navigationTitleStyle, title]);
|
|
52
54
|
useLayoutEffect(() => {
|
|
53
55
|
navigation.setOptions({
|
|
@@ -82,14 +84,17 @@ function AnimatedHeaderFlatListInner({
|
|
|
82
84
|
style: [navigationBarAnimatedStyle, styles.animatedNavigationBar, {
|
|
83
85
|
backgroundColor: navigationBarColor
|
|
84
86
|
}]
|
|
85
|
-
}), /*#__PURE__*/_jsx(Animated.
|
|
87
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
88
|
+
style: [styles.headerTitleContainer, headerTitleAnimatedStyle],
|
|
86
89
|
onLayout: event => {
|
|
87
90
|
setHeaderTitleLayout(event.nativeEvent.layout);
|
|
88
91
|
},
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
children: /*#__PURE__*/_jsx(Animated.Text, {
|
|
93
|
+
numberOfLines: 1,
|
|
94
|
+
style: [styles.headerTitle, headerTitleStyle],
|
|
95
|
+
children: title
|
|
96
|
+
}, `${key}-title`)
|
|
97
|
+
})]
|
|
93
98
|
})
|
|
94
99
|
}, key);
|
|
95
100
|
}, [navigationBarHeight, parallax, headerBackgroundAnimatedStyle, HeaderBackground, HeaderContent, headerContentAnimatedStyle, headerTitleAnimatedStyle, headerTitleStyle, title, setHeaderLayout, setHeaderTitleLayout, navigationBarAnimatedStyle, navigationBarColor]);
|
|
@@ -150,6 +155,13 @@ const styles = StyleSheet.create({
|
|
|
150
155
|
navigationBar: {
|
|
151
156
|
backgroundColor: 'transparent'
|
|
152
157
|
},
|
|
158
|
+
navigationTitleContainer: {
|
|
159
|
+
flex: 1,
|
|
160
|
+
justifyContent: 'center',
|
|
161
|
+
alignItems: 'center',
|
|
162
|
+
width: '100%',
|
|
163
|
+
minHeight: 44
|
|
164
|
+
},
|
|
153
165
|
headerWrapper: {
|
|
154
166
|
overflow: 'visible'
|
|
155
167
|
},
|
|
@@ -176,6 +188,14 @@ const styles = StyleSheet.create({
|
|
|
176
188
|
left: 0,
|
|
177
189
|
right: 0
|
|
178
190
|
},
|
|
191
|
+
headerTitleContainer: {
|
|
192
|
+
position: 'absolute',
|
|
193
|
+
bottom: 0,
|
|
194
|
+
left: 0,
|
|
195
|
+
right: 0,
|
|
196
|
+
justifyContent: 'center',
|
|
197
|
+
alignItems: 'center'
|
|
198
|
+
},
|
|
179
199
|
headerTitle: {
|
|
180
200
|
position: 'absolute'
|
|
181
201
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useLayoutEffect","useCallback","useMemo","forwardRef","StatusBar","StyleSheet","View","Animated","useNavigation","useAnimatedHeaderFlatListAnimatedStyles","getFontSizeFromStyle","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","HEADER_ITEM","AnimatedHeaderFlatListInner","title","navigationBarColor","headerTitleStyle","navigationTitleStyle","HeaderBackground","HeaderContent","StickyComponent","parallax","navigationTitleTranslateX","navigationTitleTranslateY","flatListProps","ref","navigation","scrollHandler","navigationBarHeight","headerLayout","setHeaderLayout","setHeaderTitleLayout","stickyComponentLayout","setStickyComponentLayout","stickyComponentAnimatedStyle","navigationBarAnimatedStyle","navigationTitleAnimatedStyle","headerTitleAnimatedStyle","stickyHeaderAnimatedStyle","headerContentAnimatedStyle","headerBackgroundAnimatedStyle","headerTitleFontSize","navigationTitleFontSize","navigationTitle","style","styles","navigationTitleContainer","children","Text","numberOfLines","setOptions","headerShown","headerStyle","navigationBar","headerShadowVisible","headerTransparent","headerTitle","headerTitleAlign","createHeaderComponent","key","headerWrapper","headerContainer","top","onLayout","event","nativeEvent","layout","height","undefined","headerContentContainer","animatedNavigationBar","backgroundColor","headerTitleContainer","renderItem","item","stickyHeaderContainer","stickyHeader","bottom","stickyComponentContainer","data","listData","Array","isArray","translucent","FlatList","stickyHeaderIndices","ListHeaderComponent","mainHeaderContainer","transform","translateY","onScroll","create","flex","justifyContent","alignItems","width","minHeight","overflow","position","left","right","AnimatedHeaderFlatList"],"sourceRoot":"../../../src","sources":["components/AnimatedHeaderFlatList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactElement, type RefObject } from 'react';
|
|
1
|
+
import { type ReactElement, type RefObject, type ComponentType } from 'react';
|
|
2
2
|
import { FlatList, type ColorValue, type StyleProp, type TextStyle } from 'react-native';
|
|
3
3
|
import type { FlatListPropsWithLayout } from 'react-native-reanimated';
|
|
4
4
|
interface Props {
|
|
@@ -6,9 +6,9 @@ interface Props {
|
|
|
6
6
|
navigationBarColor?: ColorValue;
|
|
7
7
|
headerTitleStyle?: StyleProp<TextStyle>;
|
|
8
8
|
navigationTitleStyle?: StyleProp<TextStyle>;
|
|
9
|
-
HeaderBackground:
|
|
10
|
-
HeaderContent?:
|
|
11
|
-
StickyComponent?:
|
|
9
|
+
HeaderBackground: ComponentType;
|
|
10
|
+
HeaderContent?: ComponentType;
|
|
11
|
+
StickyComponent?: ComponentType;
|
|
12
12
|
parallax?: boolean;
|
|
13
13
|
navigationTitleTranslateX?: number;
|
|
14
14
|
navigationTitleTranslateY?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimatedHeaderFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/AnimatedHeaderFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AnimatedHeaderFlatList.d.ts","sourceRoot":"","sources":["../../../../src/components/AnimatedHeaderFlatList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,aAAa,EAEnB,MAAM,OAAO,CAAC;AACf,OAAO,EACL,QAAQ,EAIR,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMvE,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,gBAAgB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,gBAAgB,EAAE,aAAa,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,KAAK,2BAA2B,CAAC,CAAC,IAAI,IAAI,CACxC,uBAAuB,CAAC,CAAC,CAAC,EAC1B,MAAM,KAAK,CACZ,GACC,KAAK,CAAC;AA2SR,eAAO,MAAM,sBAAsB,EAE9B,CAAC,CAAC,EACL,KAAK,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACrC,KACE,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-animated-header-flat-list",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"description": "A React Native FlatList component with an animated collapsible header, featuring parallax effects, smooth title transitions, sticky component support, and customizable styles. Built with TypeScript and separate background/content layers in header.",
|
|
5
5
|
"source": "./src/index.tsx",
|
|
6
6
|
"main": "./lib/module/index.js",
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
useLayoutEffect,
|
|
3
|
+
useCallback,
|
|
4
|
+
useMemo,
|
|
5
|
+
type ReactElement,
|
|
6
|
+
type RefObject,
|
|
7
|
+
forwardRef,
|
|
8
|
+
type ComponentType,
|
|
9
|
+
type ForwardedRef,
|
|
10
|
+
} from 'react';
|
|
2
11
|
import {
|
|
3
12
|
FlatList,
|
|
4
13
|
StatusBar,
|
|
@@ -10,21 +19,20 @@ import {
|
|
|
10
19
|
type StyleProp,
|
|
11
20
|
type TextStyle,
|
|
12
21
|
} from 'react-native';
|
|
13
|
-
import { useLayoutEffect, useCallback, useMemo } from 'react';
|
|
14
22
|
import type { FlatListPropsWithLayout } from 'react-native-reanimated';
|
|
15
23
|
import Animated from 'react-native-reanimated';
|
|
24
|
+
import { useNavigation } from '@react-navigation/native';
|
|
16
25
|
import { useAnimatedHeaderFlatListAnimatedStyles } from '../hooks/useAnimatedHeaderFlatListAnimatedStyles';
|
|
17
26
|
import { getFontSizeFromStyle } from '../utils/styleUtils';
|
|
18
|
-
import { useNavigation } from '@react-navigation/native';
|
|
19
27
|
|
|
20
28
|
interface Props {
|
|
21
29
|
title: string;
|
|
22
30
|
navigationBarColor?: ColorValue;
|
|
23
31
|
headerTitleStyle?: StyleProp<TextStyle>;
|
|
24
32
|
navigationTitleStyle?: StyleProp<TextStyle>;
|
|
25
|
-
HeaderBackground:
|
|
26
|
-
HeaderContent?:
|
|
27
|
-
StickyComponent?:
|
|
33
|
+
HeaderBackground: ComponentType;
|
|
34
|
+
HeaderContent?: ComponentType;
|
|
35
|
+
StickyComponent?: ComponentType;
|
|
28
36
|
parallax?: boolean;
|
|
29
37
|
navigationTitleTranslateX?: number;
|
|
30
38
|
navigationTitleTranslateY?: number;
|
|
@@ -52,7 +60,7 @@ function AnimatedHeaderFlatListInner<T>(
|
|
|
52
60
|
navigationTitleTranslateY = 0,
|
|
53
61
|
...flatListProps
|
|
54
62
|
}: AnimatedHeaderFlatListProps<T>,
|
|
55
|
-
ref:
|
|
63
|
+
ref: ForwardedRef<FlatList<T>>
|
|
56
64
|
) {
|
|
57
65
|
const navigation = useNavigation();
|
|
58
66
|
const {
|
|
@@ -79,12 +87,13 @@ function AnimatedHeaderFlatListInner<T>(
|
|
|
79
87
|
|
|
80
88
|
const navigationTitle = useCallback(
|
|
81
89
|
() => (
|
|
82
|
-
<Animated.
|
|
83
|
-
style={[
|
|
84
|
-
numberOfLines={1}
|
|
90
|
+
<Animated.View
|
|
91
|
+
style={[styles.navigationTitleContainer, navigationTitleAnimatedStyle]}
|
|
85
92
|
>
|
|
86
|
-
{
|
|
87
|
-
|
|
93
|
+
<Animated.Text style={navigationTitleStyle} numberOfLines={1}>
|
|
94
|
+
{title}
|
|
95
|
+
</Animated.Text>
|
|
96
|
+
</Animated.View>
|
|
88
97
|
),
|
|
89
98
|
[navigationTitleAnimatedStyle, navigationTitleStyle, title]
|
|
90
99
|
);
|
|
@@ -137,20 +146,20 @@ function AnimatedHeaderFlatListInner<T>(
|
|
|
137
146
|
]}
|
|
138
147
|
/>
|
|
139
148
|
)}
|
|
140
|
-
<Animated.
|
|
141
|
-
|
|
149
|
+
<Animated.View
|
|
150
|
+
style={[styles.headerTitleContainer, headerTitleAnimatedStyle]}
|
|
142
151
|
onLayout={(event: LayoutChangeEvent) => {
|
|
143
152
|
setHeaderTitleLayout(event.nativeEvent.layout);
|
|
144
153
|
}}
|
|
145
|
-
numberOfLines={1}
|
|
146
|
-
style={[
|
|
147
|
-
headerTitleAnimatedStyle,
|
|
148
|
-
styles.headerTitle,
|
|
149
|
-
headerTitleStyle,
|
|
150
|
-
]}
|
|
151
154
|
>
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
<Animated.Text
|
|
156
|
+
key={`${key}-title`}
|
|
157
|
+
numberOfLines={1}
|
|
158
|
+
style={[styles.headerTitle, headerTitleStyle]}
|
|
159
|
+
>
|
|
160
|
+
{title}
|
|
161
|
+
</Animated.Text>
|
|
162
|
+
</Animated.View>
|
|
154
163
|
</View>
|
|
155
164
|
</View>
|
|
156
165
|
);
|
|
@@ -273,6 +282,13 @@ const styles = StyleSheet.create({
|
|
|
273
282
|
navigationBar: {
|
|
274
283
|
backgroundColor: 'transparent',
|
|
275
284
|
},
|
|
285
|
+
navigationTitleContainer: {
|
|
286
|
+
flex: 1,
|
|
287
|
+
justifyContent: 'center',
|
|
288
|
+
alignItems: 'center',
|
|
289
|
+
width: '100%',
|
|
290
|
+
minHeight: 44,
|
|
291
|
+
},
|
|
276
292
|
headerWrapper: {
|
|
277
293
|
overflow: 'visible',
|
|
278
294
|
},
|
|
@@ -299,6 +315,14 @@ const styles = StyleSheet.create({
|
|
|
299
315
|
left: 0,
|
|
300
316
|
right: 0,
|
|
301
317
|
},
|
|
318
|
+
headerTitleContainer: {
|
|
319
|
+
position: 'absolute',
|
|
320
|
+
bottom: 0,
|
|
321
|
+
left: 0,
|
|
322
|
+
right: 0,
|
|
323
|
+
justifyContent: 'center',
|
|
324
|
+
alignItems: 'center',
|
|
325
|
+
},
|
|
302
326
|
headerTitle: {
|
|
303
327
|
position: 'absolute',
|
|
304
328
|
},
|