Mindinventory / react-native-stagger-view

Staggered Grid View is a type of layout that is used to display images and posts. As you see in various social platforms such as Pinterest and many more. (staggered, masonry, quilted, woven, etc.).
MIT License
86 stars 10 forks source link
react-native react-native-stagger-view reactnative-list-view stagger-view

react-native-stagger-view

A @mindinventory/react-native-stagger-view package is used to show listing with the Staggered, It works like a normal Flatlist with included refreshing, loading, header, footer, renderItem, loaderView, custom style of header footer and container but it's managed dynamic height of the Item just you need give Item height in its style.

Animations

Fade In Slide-Left Slide-Down Effective Flipped

Installation

using npm:

npm install @mindinventory/react-native-stagger-view

using yarn:

yarn add @mindinventory/react-native-stagger-view

Supported platform

Usage

import StaggeredList from '@mindinventory/react-native-stagger-view';
...

<StaggeredList
            data={imageURL}
            animationType={'FADE_IN_FAST'}
            contentContainerStyle={styles.contentContainer}
            showsVerticalScrollIndicator={false}
            renderItem={({item}) => renderChildren(item)}
            isLoading={isLoading}
            LoadingView={
              <View style={styles.activityIndicatorWrapper}>
                <ActivityIndicator color={'black'} size={'large'} />
              </View>
            }
          />

 const renderChildren = item => {
    return (
      <View style={getChildrenStyle()} key={item.id}>
        <View style={styles.avatarImage}>
          <Image
            onError={() => {}}
            style={styles.img}
            source={{
              uri: item.url,
            }}
            resizeMode={'cover'}
          />
        </View>
      </View>
    );
  };

const getChildrenStyle = () => {
    return {
      width: (SCREEN_WIDTH - 18) / 2,
      height: Number(Math.random() * 20 + 12) * 10,
      backgroundColor: 'gray',
      margin: 4,
      borderRadius: 18,
    };
  };

Documentation

Prop Type Description Default
animationType FADE_IN_FAST OR SLIDE_LEFT OR SLIDE_DOWN OR EFFECTIVE OR FLIPPED OR NONE Appying Animation to list or default NONE item.
innerRef MutableRefObject<ScrollView> ScrollView ref to be forwarded to the underlying scrollView. undefined
innerRef MutableRefObject<ScrollView> ScrollView ref to be forwarded to the underlying scrollView. undefined
keyPrefix string Unique key for each item.
loading boolean if true, the loadingView will be shown on top of the list. false
refreshing RefreshControlProps['refreshing'] Add pull to refresh in the list.
onRefresh RefreshControlProps['onRefresh'] Callback function when user pull to refresh.
onEndReached () => void callback in scrollView onEndReached.
onEndReachedThreshold number Threshold in pixels (virtual, not physical) for calling onEndReached. It calls onEndReached if you scrolled to this pixels from the bottom.
style StyleProp<ViewStyle> style object for the listing.
data T[] Items to be rendered.
renderItem ({item: T, i: number}) => ReactElement Takes an item from data and renders it into the list.
LoadingView ComponentType<any> Rendered while loading.
ListHeaderComponent ComponentType<any> Rendered at the top of all the items. null
ListEmptyComponent ComponentType<any> Rendered when the list is empty. null
ListFooterComponent ComponentType<any> Rendered at the bottom of all the items. null
ListHeaderComponentStyle StyleProp<ViewStyle> Style of the header.
contentContainerStyle StyleProp<ViewStyle> Style of the content container style of the main scrollView.
containerStyle StyleProp<ViewStyle> Style of main scrollView.
numColumns number Multiple columns can only be rendered. 2

Changelog

Version: 1.2.0

LICENSE!

@mindinventory/react-native-stagger-view is MIT-licensed.

Let us know!

We’d be really happy if you send us links to your projects where you use our component. Just send an email to sales@mindinventory.com And do let us know if you have any questions or suggestion regarding our work.

📌 Credits :

This project is made possible by the community surrounding it and especially the wonderful people. Rendering a list is basically clone form this repo GitHub Repo