0.3.14 • Published 2 months ago
react-native-collapsable-tabview v0.3.14
react-native-collapsable-tabview
This is collapsable tabview package
Installation
Dependencies
yarn add react-native-reanimated react-native-pager-view @shopify/flash-list
yarn add react-native-collapsable-tabview
Basic Usage
import {
TabRoot,
TabHeader,
TabBar,
TabPager,
TabView,
TabFlashList,
TabScrollView,
useTabView,
IRenderTabBarItem,
} from 'react-native-collapsable-tabview';
const TabItem = memo(function TabItem({ item, ...props }: IRenderTabBarItem) {
return (
<TouchableOpacity {...props}>
<Text>{item}</Text>
</TouchableOpacity>
);
});
const renderTabItem = (props: IRenderTabBarItem) => {
return <TabItem {...props} />;
};
export default function App() {
return (
<TabRoot>
<TabHeader>
<TabBar renderItem={renderTabItem}/>
</TabHeader>
<TabPager>
<TabView label={'Hello'}>
<TabScrollView>
<YourScrollView/>
</TabScrollView>
</TabView>
<TabView label={'Hi'}>
<TabFlashList
renderItem={_ => <Text>Item</Text>}
data={[1, 2]}
/>
</TabView>
</TabPager>
</TabRoot>
)
}
Multiple Tab Bar Usage
<TabRoot>
<TabHeader>
<TabBar renderItem={renderTabItem} />
</TabHeader>
<TabPager>
<TabView label={'Hello'}>
<TabHeader>
<TabBar renderItem={renderTabItem} />
</TabHeader>
<TabPager>
<TabView label={'Item 1'}>
<TabScrollView>
<YourScrollView/>
</TabScrollView>
</TabView>
<TabView label={'Item 2'}>
<TabScrollView>
<YourScrollView/>
</TabScrollView>
</TabView>
</TabPager>
</TabView>
<TabView label={'Hi'}>
<TabFlashList
renderItem={_ => <Text>Item</Text>}
data={[1, 2]}
/>
</TabView>
</TabPager>
</TabRoot>
API
TabHeader
Props
Name | Type | Required | Description |
---|---|---|---|
HeaderComponent | Element | No | render Header Element |
onCollapse | (value: number) => void | No | listen header collapse event. tag "worklet" before use |
onHeaderHeight | (height: number) => void | No | listen header height event |
onBarHeight | (height: number) => void | No | listen bar height event |
...ViewProps | No | extends view props |
TabBar
type IRenderTabBarItem = {
item: string;
index: number;
active: Readonly<SharedValue<number>>;
onPress: () => void;
onLayout: (e: LayoutChangeEvent) => void;
};
Props
Name | Type | Required | Description |
---|---|---|---|
renderItem | (params: IRenderTabBarItem ) => ReactElement | Yes | render tab bar item |
display | 'sameTabsWidth', 'minWindowWidth' , 'default' | No | display Tab Bar |
horizontalGap | number | No | horizontal gap of tabs |
verticalGap | number | No | vertical gap of tabs |
underlineStyle | ViewStyle | No | style of underline |
tabBarStyle | ViewStyle | No | style of tab bar |
TabPager
Methods
Name | Type | Description |
---|---|---|
goToPage | (index: number) => void | go to page |
Props
Name | Type | Required | Description |
---|---|---|---|
initialPage | number, SharedValue\<number> | No | set initial page |
scrollEnabled | boolean, SharedValue\<boolean> | No | set scroll enabled |
overScrollMode | "auto", "always", "never" | No | |
keyboardDismissMode | "none", "on-drag" | No | |
onPageChanged | (index: number) => void | No | listen tab changed |
TabView
Props
Name | Type | Required | Description |
---|---|---|---|
label | string | Yes | label of tab item |
TabScrollView
Props
Name | Type | Required | Description |
---|---|---|---|
...ScrollViewProps | no | props of ScrollView |
TabFlashList
Props
Name | Type | Required | Description |
---|---|---|---|
...FlashListProps | no | props of FlashList |
TabRefreshControl
Props
Name | Type | Required | Description |
---|---|---|---|
...RefreshControlProps | no | props of RefreshControl |
Hooks
useTabView
// wrap <TabView> brefore use this hook
const { status, topScrollPosition } = useTabView();
useAnimatedReaction(
() => status.value,
(status) => {
console.log(status);
},
[]
);
Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
License
MIT
Made with create-react-native-library
0.3.14
2 months ago
0.3.13
2 months ago
0.3.12
2 months ago
0.3.11
2 months ago
0.3.9
4 months ago
0.3.10
4 months ago
0.3.8
4 months ago
0.3.6
4 months ago
0.3.5
4 months ago
0.3.7
4 months ago
0.3.4
5 months ago
0.3.2
5 months ago
0.3.3
5 months ago
0.3.1
5 months ago
0.2.11
5 months ago
0.2.10
5 months ago
0.2.9
5 months ago
0.2.7
5 months ago
0.2.6
5 months ago
0.2.8
5 months ago
0.2.5
5 months ago
0.2.4
5 months ago
0.2.3
5 months ago
0.2.2
5 months ago
0.2.1
5 months ago
0.1.10
5 months ago
0.1.9
5 months ago
0.1.8
5 months ago
0.1.7
5 months ago
0.1.6
5 months ago
0.1.5
5 months ago
0.1.4
5 months ago
0.1.3
5 months ago
0.1.2
5 months ago
0.1.1
5 months ago
0.1.0
5 months ago