Git Product home page Git Product logo

react-native-deck-swiper's Introduction

react-native-deck-swiper

contributions welcome Standard - JavaScript Style Guide npm version

Installation

npm install react-native-deck-swiper --save

Preview

App preview

Props

Card props

Props type description required default
cards array array of data for the cards to be rendered required
renderCard func(cardData) function to render the card based on the data required
onSwipedAll func function to be called when all cards have been swiped () => {}
onSwiped func function to be called when a card is swiped. it receives the swiped card index (cardIndex) => {}
onSwipedLeft func function to be called when a card is swiped left. it receives the swiped card index (cardIndex) => {}
onSwipedRight func function to be called when a card is swiped right. it receives the swiped card index (cardIndex) => {}
onSwipedTop func function to be called when a card is swiped top. it receives the swiped card index (cardIndex) => {}
onSwipedBottom func function to be called when a card is swiped bottom. it receives the swiped card index (cardIndex) => {}
cardIndex number cardIndex to start with 0
infinite bool keep swiping indefinitely false

Swipe animation props

Props type description default
verticalThreshold number vertical swipe threshold height / 5
horizontalThreshold number horizontal swipe threshold width / 4
swipeAnimationDuration number duration of the swipe animation 350

Zoom animation props

Props type description default
secondCardZoom number second card zoom 0.97
zoomAnimationDuration number duration of the zoom animation 100
zoomFriction number zoom spring animation friction 7

Rotation animation props

Props type description default
inputRotationRange array x values range for the rotation output [-width / 2, 0, width / 2]
outputRotationRange array rotation values for the x values in inputRotationRange ["-10deg", "0deg", "10deg"]

Opacity animation props

Props type description default
animateOpacity bool animate opacity false
inputOpacityRangeX array pan x opacity input range [-width / 2, -width / 3, 0, width / 3, width / 2]
outputOpacityRangeX array opacity values for the values in inputOpacityRange [0.8, 1, 1, 1, 0.8]
inputOpacityRangeY array pan y opacity input range [-height / 2, -height / 3, 0, height / 3, height / 2]
outputOpacityRangeY array opacity values for the values in inputOpacityRange [0.8, 1, 1, 1, 0.8]

Swipe back animation props

Props type description default
previousCardInitialPositionX number initial x position of the swipe back card 0
previousCardInitialPositionY number initial y position of the swipe back card -height
swipeBackAnimationDuration number swipe back animation duration 600
swipeBackFriction number swipe back spring animation friction 11

Style props

Props type description default
backgroundColor number background color for the view containing the cards '#4FD0E9'
marginTop number marginTop for the swiper container 0
marginBottom number marginBottom for the swiper container 0
cardVerticalMargin number card vertical margin 60
cardHorizontalMargin number card horizontal margin 20
cardHorizontalMargin number card horizontal margin 20
childrenOnTop bool render children on top or not false

Methods

To trigger imperative animations, you can use a reference to the Swiper component.

Props arguments description
swipeBack callback(previousCardIndex) swipe to the previous card
jumpToCardIndex cardIndex set the current card index

Usage example

Example usage with a pressable button contained in the component.

render () {
    <View style={styles.container}>
        <Swiper
            cards={['DO', 'MORE', 'OF', 'WHAT', 'MAKES', 'YOU', 'HAPPY']}
            renderCard={(card) => {
                return (
                    <View style={styles.card}>
                        <Text style={styles.text}>{card}</Text>
                    </View>
                )
            }}
            onSwiped={(cardIndex) => {console.log(cardIndex)}}
            onSwipedAll={() => {console.log('onSwipedAll')}}
            cardIndex={0}
            backgroundColor={'#4FD0E9'}>
            <Button 
                onPress={() => {console.log('oulala')}} 
                title="Press me">
                You can press me
            </Button>
        </Swiper>
    </View>
}

Demo inside the Exemples Folder

Stylesheet example

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#F5FCFF'
  },
  card: {
    flex: 1,
    borderRadius: 4,
    borderWidth: 2,
    borderColor: '#E8E8E8',
    justifyContent: 'center',
    backgroundColor: 'white',
  },
  text: {
    textAlign: 'center',
    fontSize: 50,
    backgroundColor: 'transparent'
  }
})

Todo(contributions are welcome)

Underlaying card offset to achieve a stack effect

react-native-deck-swiper's People

Contributors

alexbrillant avatar

Watchers

 avatar  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.