0.3.14 • Published 2 months ago

react-native-collapsable-tabview v0.3.14

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

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

NameTypeRequiredDescription
HeaderComponentElementNorender Header Element
onCollapse(value: number) => voidNolisten header collapse event. tag "worklet" before use
onHeaderHeight(height: number) => voidNolisten header height event
onBarHeight(height: number) => voidNolisten bar height event
...ViewPropsNoextends view props

TabBar

type IRenderTabBarItem = {
  item: string;
  index: number;
  active: Readonly<SharedValue<number>>;
  onPress: () => void;
  onLayout: (e: LayoutChangeEvent) => void;
};

Props

NameTypeRequiredDescription
renderItem(params: IRenderTabBarItem ) => ReactElementYesrender tab bar item
display'sameTabsWidth', 'minWindowWidth' , 'default'Nodisplay Tab Bar
horizontalGapnumberNohorizontal gap of tabs
verticalGapnumberNovertical gap of tabs
underlineStyleViewStyleNostyle of underline
tabBarStyleViewStyleNostyle of tab bar

TabPager

Methods

NameTypeDescription
goToPage(index: number) => voidgo to page

Props

NameTypeRequiredDescription
initialPagenumber, SharedValue\<number>Noset initial page
scrollEnabledboolean, SharedValue\<boolean>Noset scroll enabled
overScrollMode"auto", "always", "never"No
keyboardDismissMode"none", "on-drag"No
onPageChanged(index: number) => voidNolisten tab changed

TabView

Props

NameTypeRequiredDescription
labelstringYeslabel of tab item

TabScrollView

Props

NameTypeRequiredDescription
...ScrollViewPropsnoprops of ScrollView

TabFlashList

Props

NameTypeRequiredDescription
...FlashListPropsnoprops of FlashList

TabRefreshControl

Props

NameTypeRequiredDescription
...RefreshControlPropsnoprops 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