Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/bmcmahen/react-gesture-stack

an animated stack view for the web similar to that found in iOS
https://github.com/bmcmahen/react-gesture-stack

gesture react react-spring stack

Last synced: about 2 months ago
JSON representation

an animated stack view for the web similar to that found in iOS

Awesome Lists containing this project

README

        


A demo showing views being swiped left and right.

# react-gesture-stack

[![npm package](https://img.shields.io/npm/v/react-gesture-stack/latest.svg)](https://www.npmjs.com/package/react-gesture-stack)
[![Follow on Twitter](https://img.shields.io/twitter/follow/benmcmahen.svg?style=social&logo=twitter)](https://twitter.com/intent/follow?screen_name=benmcmahen)

React-gesture-stack provides an iOS stack-like interface for use on the web. It supports gestures to "go back" in the stack. View the above example [on CodeSandbox](https://codesandbox.io/embed/damp-monad-ukvcu).

This was originally built for use in [Sancho-UI](https://github.com/bmcmahen/sancho).

## Install

Install `react-gesture-stack` and its peer dependency `react-gesture-responder` using yarn or npm.

```
yarn add react-gesture-stack react-gesture-responder
```

## Basic usage

```jsx
import { Stack, StackItem, StackTitle } from "react-gesture-stack";
// optional styles
import "react-gesture-stack/src/styles.css";

function Simple() {
const [index, setIndex] = React.useState(0);

return (
setIndex(i)}
index={index}
style={{ width: "400px", height: "600px" }}
items={[
{
title: ,
content: (

setIndex(index + 1)}>View 2

)
},
{
title: ,
content: (

setIndex(index + 1)}>View 3

)
},
{
title: ,
content: (

No more!


)
}
]}
/>
);
}
```

## API

### Stack

| Name | Type | Default Value | Description |
| ---------------- | -------------------- | ------------- | ------------------------------------------------------- |
| index \* | number | | The index of stack item to show |
| onIndexChange \* | (i: number) => void; | | A callback requesting the active stack item change |
| items \* | StackItemList[] | | A list of stack items to render (see the above example) |
| disableNav | boolean | false | Hide the top navigation pane |
| navHeight | number | 50 | The height of the navigation pane (in px) |

### StackItem

| Name | Type | Default Value | Description |
| -------- | ---------- | ------------- | ------------------------- |
| style | object | | Optional style attributes |
| children | React.Node | | Content of the stack item |

### StackTitle

| Name | Type | Default Value | Description |
| ------------- | ---------- | ------------- | ---------------------------------------------------------------------------- |
| title | React.Node | | The title of the stack item |
| backTitle | string | "Back" | The title of the back button |
| contentAfter | React.Node | | Content that appears to the right of the title |
| contentBefore | React.Node | | Content that appears to the left of the title (and replaces the back button) |
| backButton | React.Node | | Render a custom back button. You're responsible for listening to click handlers and updating the current index|

## License

MIT