GithubHelp home page GithubHelp logo

ystarlongzi / react-native-sticky-item Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gorhom/react-native-sticky-item

0.0 1.0 0.0 1.46 MB

An interactive sticky item inspired by Facebook Stories.

License: MIT License

JavaScript 2.34% Java 3.68% TypeScript 85.08% Ruby 4.45% Objective-C 3.79% HTML 0.66%

react-native-sticky-item's Introduction

Sticky Item

npm npm npm

An interactive sticky item inspired by Facebook Stories.


Installation

yarn add @gorhom/sticky-item
# or
npm install @gorhom/sticky-item

Also, you need to install react-native-reanimated, react-native-gesture-handler & react-native-svg, and follow theirs installation instructions.

Usage

...
import StickyItemFlatList from '@gorhom/sticky-item';

// dummy data
const data = [...Array(20)]
  .fill(0)
  .map((_, index) => ({ id: `item-${index}` }));

// configs
const ITEM_WIDTH = 90;
const ITEM_HEIGHT = 150;
const STICKY_ITEM_WIDTH = 24;
const STICKY_ITEM_HEIGHT = 24;
const STICKY_ITEM_BACKGROUNDS = ['#222', '#000'];
const SEPARATOR_SIZE = 8;
const BORDER_RADIUS = 10;

const StickyItemView = ({
  x,
  threshold,
  itemWidth,
  itemHeight,
  stickyItemWidth,
  stickyItemHeight,
  separatorSize,
  isRTL,
}) => {

  const amazingAnimation = {
    // here you add your custom interactive animation
    // based on the animated value `x`
  }

  return <Animated.View style={amazingAnimation} />
}

const App = () => {
  // methods
  const handleStickyItemPress = () => Alert.alert('Sticky Item Pressed');

  // render
  const renderItem = ({ item, index}) => (
    <View
      key={`item-${index}`}
      style={{
        backgroundColor: 'red',
        width: ITEM_WIDTH,
        height: ITEM_HEIGHT,
      }}
    />
  )
  return (
    <StickyItemFlatList
      itemWidth={ITEM_WIDTH}
      itemHeight={ITEM_HEIGHT}
      separatorSize={SEPARATOR_SIZE}
      borderRadius={BORDER_RADIUS}
      stickyItemWidth={STICKY_ITEM_WIDTH}
      stickyItemHeight={STICKY_ITEM_HEIGHT}
      stickyItemBackgroundColors={STICKY_ITEM_BACKGROUNDS}
      stickyItemContent={StickyItemView}
      onStickyItemPress={handleStickyItemPress}
      data={data}
      renderItem={renderItem}
    />
  )
}

export default App

Props

name description required type default
itemWidth Item's width. YES number
itemHeight Item's height. YES number
separatorSize FlatList's separator width, * if you provide ItemSeparatorComponent, you will need to set separatorSize. NO* number 10
borderRadius Item & sticky border radius. NO number 15
stickyItemActiveOpacity Sticky item's active opacity. YES number 0.25
stickyItemWidth Sticky item's width. YES number
stickyItemHeight Sticky item's height. YES number
stickyItemBackgroundColors Sticky item's two background colors, one when sticky item is extended another when it's minimize. YES string[]
stickyItemContent Sticky item's content component. YES ReactNode
isRTL FlatList' layout direction. NO boolean false
onStickyItemPress Callback when sticky item gets pressed. NO function
...FlatList Props React Native FlatList props. NO FlatList

To Do

  • Write a detailed step-by-step instruction to create sticky interactive animation.
  • Add more examples.
  • Add vertical support ?.

Built With ❤️

Author

License

MIT

Liked the library? 😇

Buy Me A Coffee


react-native-sticky-item's People

Contributors

gorhom avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.