Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yuvraj24/react-native-stories-view

A simple and fully customizable React Native component that implements a status/stories feature similar to Whatsapp & Instagram ⭐✨🌟
https://github.com/yuvraj24/react-native-stories-view

android component component-library create-react-app cross-platform ios javascript js native props react react-dom react-hooks react-native render types typescript useeffect usereducer usestate

Last synced: 4 days ago
JSON representation

A simple and fully customizable React Native component that implements a status/stories feature similar to Whatsapp & Instagram ⭐✨🌟

Awesome Lists containing this project

README

        

# React Native Stories View ⚡

[![npm version](https://badge.fury.io/js/react-native-stories-view.svg?style=flat)](https://www.npmjs.com/package/react-native-stories-view)
![Platform - Android and IOS](https://img.shields.io/badge/platform-Android%20%7C%20IOS-green.svg)

![](assets/storybg.jpeg)

A simple and fully customizable React Native components that provides a status/stories feature like Whatsapp, Instagram. For navigation across all the stories you can touch the left or right portion of the screen similar to what we see on Whatsapp or Instagram. The library works seemleslly across both Android as well as IOS platform developed with ❤️ in Typescript & React 🔥.

#### Feature's include :

* Progress bar with custom duration & styling options.
* Story Image view with custom styling options.
* A fully customizable Header View, you can use default one or pass in your choice of component.
* A fully customizable Footer View, you can use default one or pass in your choice of component.

## Spread Your ❤️:
[![GitHub followers](https://img.shields.io/github/followers/yuvraj24.svg?style=social&label=Follow)](https://github.com/yuvraj24) [![Twitter Follow](https://img.shields.io/twitter/follow/yuvrajpy.svg?style=social)](https://twitter.com/yuvrajpy)

## Demo

|IOS | Android |
-------------------------|--------------------------|
| | |

## Screenshots

|Example One | Example Two | Example Three | Example Four | Example Five |
|-------------------------|-------------------------|-------------------------|-------------------------|-------------------|
|![](assets/photo1.png) | ![](assets/photo2.png) | ![](assets/photo4.png) | ![](assets/photo3.png) |![](assets/photo5.png) |

## Installation

If using yarn:

```
yarn add react-native-stories-view
```

If using npm:

```
npm i react-native-stories-view
```

## Usage

For example code, Click here

* ### ProgressBar

This individual component can be used to display progressive bar with controlled duration, style & motion. To programatically enable or disable the progress pass boolean value to `enableProgress` & to change the position of progress use `progressIndex` prop along with `duration` prop to control the motion. On every change of propress position `onChange` function will be invoked for any customization.

```js
{}}
progressIndex={0}
enableProgress={true}
duration={20}
barStyle={{
barActiveColor: BAR_ACTIVE_COLOR,
barInActiveColor: BAR_INACTIVE_COLOR,
barWidth: 100,
barHeight: 4
}}
/>
```

* ### StoryContainer

This component provides you with entire functionality of Status/Stories feature along with flexible customization.

#### Basic Usage

This simply display's only the Progress Bar & the Story view images without any header or footer view. The container can be given style by providing `containerStyle` props.

```js
import { StoryContainer } from 'react-native-stories-view';

alert("onComplete")}
containerStyle={{
width: '100%',
height: '100%',
}}
/>
```

#### Header View

You can use the inbuilt header view which can display basic user details by simply providing `userProfile` props with specified parameters.

```js
// User Information in header
alert("onComplete")}
userProfile={{
userImage: PROFILE,
userName: 'Yuvraj Pandey',
userMessage: 'Work hard & success will follow !!',
imageArrow: BACK,
onImageClick: () => {
console.log('lskndclksnc');
Alert.alert('User profile image tapped');
},
}}
/>
```

However if you wish to add your own custom component, you can pass your own component in `headerComponent` prop and this will replace the header described above.

```js
alert("onComplete")}
duration={20}
headerComponent={}
/>
```

In case neither of the prop i.e `userProfile` or `headerComponent` is passed then header view will be not be displayed.

#### Footer View

The in built footer view provides you with a reply option where in you can accept user input for the status user just viewed.
`isShowReply` boolean prop can be used to programaically show or hide the footer reply view. The `onReplyTextChange` & `onReplyButtonClick` function provides callback for the action performed by the user along with the `progressIndex` of the particular story currently viewed.

```js
// Reply option in Footer
alert("onComplete")}
replyView={{
isShowReply: true,
onReplyTextChange: (textReply, progressIndex) => {
console.log(`Text : ${textReply} , position : ${progressIndex}`);
},
onReplyButtonClick: (buttonType, progressIndex) => {
switch (buttonType) {
case 'send':
console.log(`Send button tapped for position : ${progressIndex}`);
break;

case 'smiley':
console.log(`Smiley button tapped for position : ${progressIndex}`);
break;
}
},
}}
/>
```

If you have your own custom component to use in Footer, simply pass your component in `footerComponent` prop as below which will replace the inbuilt Footer with your own custom style.

```js
// Custom Footer component option
alert("onComplete")}
footerComponent={}
/>
```

However if neither of the prop i.e `replyView` or `footerComponent` is passed then footer view will be not be displayed.

## Documentation :

### ProgressBar

| **PropName** | **PropType** | **Purpose** | **Required** |
| :--------------------- | :--------------: | :--------------------------------------------- | :------------: |
| images | `Array` | Story images array to render count of bar | Mandatory |
| progressIndex | `number` | Starts progress for a particular index item | Mandatory |
| enableProgress | `Boolean` | Start/Stop the progress bar motion | Optional |
| duration | `Number` | Control's the speed of progress bar | Optional |
| barStyle | `Object` | Progress Bar style | Optional |
| barActiveColor | `String` | Active progress color | Optional |
| barInActiveColor | `String` | In Active progress color | Optional |
| barWidth | `number` | Default 100, Always > 10 but < 100 | Optional |
| barHeight | `number` | Default 7, Always > 4 but < 10 | Optional |
| onChange | `Function` | Function executes after change in progressIndex | Optional |

### Basic

| **PropName** | **PropType** | **Purpose** | **Required** |
| :--------------------- | :--------------: | :--------------------------------------------- | :------------: |
| visible | `Boolean` | Toggle visibility of Story Container | Mandatory |
| enableProgress | `Boolean` | Enable/disable the top progress bar visibility | Optional |
| images | `Array` | Story Images | Mandatory |
| duration | `Number` | Control's the speed of progress bar | Optional |
| containerStyle | `Object` | Container style | Optional |
| onComplete | `Function` | Function executes after all status is completed | Optional |

### Header

| **PropName** | **PropType** | **Purpose** | **Required** |
| :--------------------- | :--------------: | :--------------------------------------------- | :------------: |
| userProfile | `Object` | Default user detail view | Optional |
| userImage | `String` | Image URL | Optional |
| userName | `String` | Display's user name | Optional |
| userMessage | `String` | Display's user information | Optional |
| imageArrow | `String` | Image Url | Optional |
| onImageClick | `Function` | Function that executes imageArrow click event | Optional |
| headerComponent | `Component` | Custom component | Optional |

### Footer

| **PropName** | **PropType** | **Purpose** | **Required** |
| :--------------------- | :--------------: | :--------------------------------------------- | :------------: |
| replyView | `Object` | Default reply view with Input text | Optional |
| isShowReply | `Object` | Toggle's the display of footer view | Mandatory |
| onReplyTextChange | `String` | Callback for user entered text with posotion | Optional |
| onReplyButtonClick | `String` | Callback for emoji & send click with posotion | Optional |
| footerComponent | `Component` | Custom component | Optional |

## About Me

## Yuvraj Pandey
*I am a passionate Engineer which likes to push himself on various fronts of technologies.*

For more exciting updates follow me,