From 0410cc6a5e430a088202f65194b038e2e6c53daa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20M=C4=99drek?= Date: Thu, 28 Apr 2022 15:19:05 +0200 Subject: [PATCH] feat: new api - AvatarHeader - add AvatarHeader components - add useStickyHeaderScrollProps used to handle snap-effect props - add usePredefinedHeader used to handle header props --- example/src/navigation/AppNavigator.js | 6 + example/src/screens/HomeScreen/HomeScreen.tsx | 18 ++ .../AvatarHeaderFlatListExample.tsx | 48 +++++ .../AvatarHeaderScrollViewExample.tsx | 51 ++++++ .../AvatarHeaderSectionListExample.tsx | 64 +++++++ package.json | 4 +- src/components/IconRenderer/IconRenderer.tsx | 2 +- src/constants/screenStyles.ts | 4 + src/hooks/useResponsiveSize.ts | 15 ++ .../AvatarHeader/AvatarHeaderFlatList.tsx | 98 +++++++++++ .../AvatarHeader/AvatarHeaderProps.ts | 28 +++ .../AvatarHeader/AvatarHeaderScrollView.tsx | 84 +++++++++ .../AvatarHeader/AvatarHeaderSectionList.tsx | 100 +++++++++++ .../AvatarHeader/components/HeaderBar.tsx | 165 ++++++++++++++++++ .../components/HeaderForeground.tsx | 163 +++++++++++++++++ .../AvatarHeader/useAvatarHeader.tsx | 74 ++++++++ .../common/SharedProps.ts | 61 +++++++ .../common/components/HeaderBackground.tsx | 48 +++++ .../components/HeaderBackgroundImage.tsx | 36 ++++ .../common/components/HeaderWrapper.tsx | 85 +++++++++ .../common/hooks/usePredefinedHeader.tsx | 46 +++++ .../common/hooks/useRTLStyles.ts | 27 +++ .../common/utils/scrollPosition.ts | 3 + src/primitiveComponents/StickyHeaderProps.ts | 8 + .../useStickyHeaderScrollProps.ts | 133 ++++++++++++++ yarn.lock | 5 + 26 files changed, 1374 insertions(+), 2 deletions(-) create mode 100644 example/src/screens/additionalExamples/AvatarHeaderFlatListExample.tsx create mode 100644 example/src/screens/additionalExamples/AvatarHeaderScrollViewExample.tsx create mode 100644 example/src/screens/additionalExamples/AvatarHeaderSectionListExample.tsx create mode 100644 src/hooks/useResponsiveSize.ts create mode 100644 src/predefinedComponents/AvatarHeader/AvatarHeaderFlatList.tsx create mode 100644 src/predefinedComponents/AvatarHeader/AvatarHeaderProps.ts create mode 100644 src/predefinedComponents/AvatarHeader/AvatarHeaderScrollView.tsx create mode 100644 src/predefinedComponents/AvatarHeader/AvatarHeaderSectionList.tsx create mode 100644 src/predefinedComponents/AvatarHeader/components/HeaderBar.tsx create mode 100644 src/predefinedComponents/AvatarHeader/components/HeaderForeground.tsx create mode 100644 src/predefinedComponents/AvatarHeader/useAvatarHeader.tsx create mode 100644 src/predefinedComponents/common/SharedProps.ts create mode 100644 src/predefinedComponents/common/components/HeaderBackground.tsx create mode 100644 src/predefinedComponents/common/components/HeaderBackgroundImage.tsx create mode 100644 src/predefinedComponents/common/components/HeaderWrapper.tsx create mode 100644 src/predefinedComponents/common/hooks/usePredefinedHeader.tsx create mode 100644 src/predefinedComponents/common/hooks/useRTLStyles.ts create mode 100644 src/predefinedComponents/common/utils/scrollPosition.ts create mode 100644 src/primitiveComponents/useStickyHeaderScrollProps.ts diff --git a/example/src/navigation/AppNavigator.js b/example/src/navigation/AppNavigator.js index cb5fcbe2..5df5f1db 100644 --- a/example/src/navigation/AppNavigator.js +++ b/example/src/navigation/AppNavigator.js @@ -4,6 +4,9 @@ import { createStackNavigator } from '@react-navigation/stack'; import { HomeScreen, CardScreen } from '../screens'; import YodaScreen from '../screens/additionalExamples/YodaScreen'; import AppStoreHeader from '../screens/additionalExamples/SimsScreen'; +import { AvatarHeaderFlatListExample } from '../screens/additionalExamples/AvatarHeaderFlatListExample'; +import { AvatarHeaderScrollViewExample } from '../screens/additionalExamples/AvatarHeaderScrollViewExample'; +import { AvatarHeaderSectionListExample } from '../screens/additionalExamples/AvatarHeaderSectionListExample'; import { StickyHeaderFlatListExample } from '../screens/additionalExamples/StickyHeaderFlatListExample'; import { StickyHeaderScrollViewExample } from '../screens/additionalExamples/StickyHeaderScrollViewExample'; import { StickyHeaderSectionListExample } from '../screens/additionalExamples/StickyHeaderSectionListExample'; @@ -20,6 +23,9 @@ const AppNavigator = () => ( + + + ); diff --git a/example/src/screens/HomeScreen/HomeScreen.tsx b/example/src/screens/HomeScreen/HomeScreen.tsx index 94d2038e..73fb51f9 100644 --- a/example/src/screens/HomeScreen/HomeScreen.tsx +++ b/example/src/screens/HomeScreen/HomeScreen.tsx @@ -143,6 +143,24 @@ const HomeScreen: VFC = () => { navigation.navigate('StickyHeaderSectionList'); }} /> +