All Projects → r0b0t3d → react-native-collapsible

r0b0t3d / react-native-collapsible

Licence: MIT license
Fully customizable collapsible views

Programming Languages

typescript
32286 projects
java
68154 projects - #9 most used programming language
objective c
16641 projects - #2 most used programming language
javascript
184084 projects - #8 most used programming language
ruby
36898 projects - #4 most used programming language
c
50402 projects - #5 most used programming language
swift
15916 projects

Projects that are alternatives of or similar to react-native-collapsible

Azexpandableiconlistview
An expandable/collapsible view component written in Swift.
Stars: ✭ 284 (+816.13%)
Mutual labels:  collapsible
Stickytabbarviewcontroller
Sticky and Collapsible View on top of tab bar
Stars: ✭ 82 (+164.52%)
Mutual labels:  collapsible
React Native Collapsible
Animated collapsible component for React Native, good for accordions, toggles etc
Stars: ✭ 2,178 (+6925.81%)
Mutual labels:  collapsible
React Collapsible
React component to wrap content in Collapsible element with trigger to open and close.
Stars: ✭ 402 (+1196.77%)
Mutual labels:  collapsible
Octopatcher
Arrgh Some Patchy Goodness to GitHub!
Stars: ✭ 49 (+58.06%)
Mutual labels:  collapsible
React Native Collapsible Header Views
ScrollView, FlatList, SectionList with collapsible headers + HOC for wrapping custom scrollables
Stars: ✭ 120 (+287.1%)
Mutual labels:  collapsible
BeefUp
Just a jQuery accordion plugin
Stars: ✭ 41 (+32.26%)
Mutual labels:  collapsible
React Sanfona
Accessible react accordion component
Stars: ✭ 248 (+700%)
Mutual labels:  collapsible
React Native Collapsible Toolbar
Pure JS based collapsible toolbar for react native on Android and iOS
Stars: ✭ 50 (+61.29%)
Mutual labels:  collapsible
Campcotcollectionview
Collapse and expand UICollectionView sections with one method call.
Stars: ✭ 161 (+419.35%)
Mutual labels:  collapsible
Ynexpandablecell
✨ Awesome expandable, collapsible tableview cell for iOS written in Swift 4
Stars: ✭ 445 (+1335.48%)
Mutual labels:  collapsible
React Collapsing Table
react-collapsing-table: a React rewrite of the jQuery table plugin from "datatables.net". Inspired by a lack of similar table behaviors, notably collapsibility and responsivity.
Stars: ✭ 21 (-32.26%)
Mutual labels:  collapsible
Luexpandabletableview
A subclass of UITableView with expandable and collapsible sections
Stars: ✭ 125 (+303.23%)
Mutual labels:  collapsible
Collapsible Calendar View Android
Collapsible CalendarView is a simple calendar view which can be collapsed to save space and can be expanded when needed
Stars: ✭ 336 (+983.87%)
Mutual labels:  collapsible
Expandableview
Expandable view for Xamarin.Forms
Stars: ✭ 178 (+474.19%)
Mutual labels:  collapsible
react-native-collapsible-list
A ReactNative collapsible list component
Stars: ✭ 70 (+125.81%)
Mutual labels:  collapsible
Collapsible Resource Manager
A custom sidebar menu with collapsible groups
Stars: ✭ 100 (+222.58%)
Mutual labels:  collapsible
react-collapse
Component-wrapper for collapse animation with CSS for elements with variable and dynamic height
Stars: ✭ 143 (+361.29%)
Mutual labels:  collapsible
Swiftycomments
UITableView based component designed to display a hierarchy of expandable/foldable comments.
Stars: ✭ 200 (+545.16%)
Mutual labels:  collapsible
Abexpandableview
Expandable, collapsible, filterable and single/multi selectable table view.
Stars: ✭ 138 (+345.16%)
Mutual labels:  collapsible

@r0b0t3d/react-native-collapsible

Fully customizable collapsible views

alt text

Installation

yarn add @r0b0t3d/react-native-collapsible

I am using reanimated 2 for animation. So you should install and follow instruction here to setup your project react-native-reanimated

Key features

1️⃣ Support FlatList/ScrollView 2️⃣ Support sticky header 3️⃣ Can have multiple sticky headers 4️⃣ Easy to customize

Usage

1. Basic

import {
  CollapsibleContainer,
  CollapsibleFlatList,
  CollapsibleScrollView,
} from '@r0b0t3d/react-native-collapsible';

// ...
const MyComponent = () => {
  const {
    collapse,   // <-- Collapse header
    expand,     // <-- Expand header
    scrollY,    // <-- Animated scroll position. In case you need to do some animation in your header or somewhere else
  } = useCollapsibleContext();

  return (
    <CollapsibleContainer>          // 1️⃣ (Required) Outermost container 
      <CollapsibleHeaderContainer>  // 2️⃣ (Required) Header view
        <!-- Your header view -->
        <StickyView>                // 3️⃣ Sticky view
          <!-- Your sticky view goes here -->
        </StickyView>
      </CollapsibleHeaderContainer>
      <CollapsibleFlatList          // 4️⃣ (Required) Your FlatList/ScrollView
        data={data}
        renderItem={renderItem}
        headerSnappable={false} // <-- should header auto snap when you release the finger
      />
    </CollapsibleContainer>
  )
}

export default withCollapsibleContext(MyComponent); // 5️⃣ (Required)wrap your component with `withCollapsibleContext`

2. Advance

We support multiple CollapsibleHeaderContainer and StickyView. It come useful in case you need to break your code into smaller component.

Parent.tsx

const Parent = () => {
  const [tabIndex, setTabIndex] = useState(0)

  return (
    <CollapsibleContainer>
      <CollapsibleHeaderContainer>
        <!-- Your header view -->
        <StickyView>
          <TabView currentTab={tabIndex} onTabChange={setTabIndex} />
        </StickyView>
      </CollapsibleHeaderContainer>

      {tabIndex === 0 && <FirstTab />}
      {tabIndex === 1 && <SecondTab />}
    </CollapsibleContainer>
  )
}

FirstTab.tsx

const FirstTab = () => {
  return (
    <>
      <CollapsibleHeaderContainer>
        <!-- 😍 You can have another headerview in each tab where you can add another StickyView there -->
        <StickyView>
          <!-- Your sticky view goes here -->
        </StickyView>
        <View />
        <StickyView>
          <!-- 🚀 Bonus, multiple sticky view -->
        </StickyView>
      </CollapsibleHeaderContainer>
      <CollapsibleFlatList
        data={data}
        renderItem={renderItem}
      />
    </>
  )
}

Showcases

Note: Feel free to add your showcase here by a PR
App Gif
ANU Global

Breaking changes

1.0.0

  • Removed

    • persistHeaderHeight
    • contentMinHeight
  • Added

    • CollapsibleContainer
    • StickyView

Tips

1. Trigger scroll when scroll inside CollapsibleHeaderContainer

  • If your header doesn't contains touchable component, try pointerEvents="none"
<CollapsibleHeaderContainer>
  <View pointerEvents="none">
    <Text>Header</Text>
  </View>
</CollapsibleHeaderContainer>
  • If your header contains touchable componet, try to set pointerEvents="box-none" for every nested views that contains touchable, otherwise use pointerEvents="none"
<CollapsibleHeaderContainer>
    <View pointerEvents="box-none"> // <-- this is parent view
        <View pointerEvents="none"> // <-- this view doesn't contain touchable component
            <Text>Header</Text>
        </View>
        <View pointerEvents="box-none"> // <-- this view contain touchable component
            <View pointerEvents="none">
                <Text>Some text</Text>
            </View>
            <TouchableOpacity>
                <Text>Button</Text>
            </TouchableOpacity>
        </View>
    </View>
</CollapsibleHeaderContainer>

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].