All Projects → exelban → react-swipe-component

exelban / react-swipe-component

Licence: Apache-2.0 license
Swipe bindings for react

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to react-swipe-component

Vuetify Swipeout
👆 A swipe out example built with Vue CLI 3 + Vuetify + Swiper.
Stars: ✭ 117 (+143.75%)
Mutual labels:  swipe, touch-events
Swiper
Most modern mobile touch slider with hardware accelerated transitions
Stars: ✭ 29,519 (+61397.92%)
Mutual labels:  swipe, touch-events
Smart Recycler Adapter
Small, smart and generic adapter for recycler view with easy and advanced data to ViewHolder binding.
Stars: ✭ 197 (+310.42%)
Mutual labels:  swipe
react-native-segment-control
Swipeable SegmentedControl component for React Native apps
Stars: ✭ 21 (-56.25%)
Mutual labels:  swipe
Recordview
A Simple Audio Recorder View with "hold to Record Button" and "Swipe to Cancel " Like WhatsApp
Stars: ✭ 253 (+427.08%)
Mutual labels:  swipe
Slip
Slip.js — UI library for manipulating lists via swipe and drag gestures
Stars: ✭ 2,421 (+4943.75%)
Mutual labels:  swipe
kikder-dating-swipe-app
❤️ Kik App, you know? 💑 Kikder™ is a dating webapp that integrates the Kik, uses the HorOrNot game and the Tinder swipe. The F.A.S.T. Game Approach! The web app uses a custom lightweight MVC framework.
Stars: ✭ 21 (-56.25%)
Mutual labels:  swipe
Vue Swing
Vue.js wrapper for Swing
Stars: ✭ 193 (+302.08%)
Mutual labels:  swipe
alloy-finger-vue
alloy-finger vue版集成,移动的适配、阻止冒泡、longtap事件修改
Stars: ✭ 18 (-62.5%)
Mutual labels:  touch-events
Swiped Events
Adds `swiped` events to the DOM in 0.7k of pure JavaScript
Stars: ✭ 249 (+418.75%)
Mutual labels:  swipe
vue-product-carousel
Simple product carousel with hot image replacement, Zoom and Swipe mode
Stars: ✭ 37 (-22.92%)
Mutual labels:  swipe
Swipycell
Easy to use UITableViewCell implementing swiping to trigger actions.
Stars: ✭ 230 (+379.17%)
Mutual labels:  swipe
Fusuma
Multitouch gestures with libinput driver on Linux
Stars: ✭ 2,870 (+5879.17%)
Mutual labels:  swipe
iron-swipeable-pages
[Polymer 1.x] Element that enables switching between different pages by swiping gesture.
Stars: ✭ 51 (+6.25%)
Mutual labels:  swipe
Spstorkcontroller
Now playing controller from Apple Music, Mail & Podcasts Apple's apps.
Stars: ✭ 2,494 (+5095.83%)
Mutual labels:  swipe
nativescript-swipe-layout
🎆
Stars: ✭ 21 (-56.25%)
Mutual labels:  swipe
Pageable
Create full page scrolling web pages. No jQuery.
Stars: ✭ 199 (+314.58%)
Mutual labels:  swipe
Reswipecard
a light lib for swipe the cards implemented by RecyclerView
Stars: ✭ 230 (+379.17%)
Mutual labels:  swipe
RNSlidingButton
React Native Button component which support Slide event to perform action.
Stars: ✭ 19 (-60.42%)
Mutual labels:  swipe
use-long-press
React hook for detecting click (or tap) and hold event
Stars: ✭ 97 (+102.08%)
Mutual labels:  touch-events

react-swipe-component

Download Count

Demo image

Swipe bindings for react. Demo

Install

yarn add react-swipe-component

Or with npm:

npm install react-swipe-component --save

Usage

Example

import React from "react"
import ReactDOM from "react-dom"
import {Swipe, Position} from "react-swipe-component"

class Demo extends React.Component<{}, {}>{
  render() {
    return <Swipe
      nodeName="div"
      className="test"
      onSwipeEnd={this.onSwipeEnd}
      onSwipedLeft={this.onSwipeLeftListener}
      onSwipedRight={this.onSwipeRightListener}
      onSwipedDown={this.onSwipeDownListener}
      onSwipedUp={this.onSwipeUpListener}
      onSwipe={this.onSwipeListener}>
      Demo
    </Swipe>
  }

  onSwipeEnd = () => {
    console.log("Swipe Ended")
  }
  onSwipeLeftListener = () => {
    console.log("Swiped left")
  }
  onSwipeRightListener = () => {
    console.log("Swiped right")
  }
  onSwipeUpListener = () => {
    console.log("Swiped Up")
  }
  onSwipeDownListener = () => {
    console.log("Swiped down")
  }
  onSwipeListener = (p) => {
    if (p.x !== 0) {
      console.log(`Swipe x: ${p.x}`)
    }
    if (p.y !== 0) {
      console.log(`Swipe y: ${p.y}`)
    }
  }
}

ReactDOM.render(<Demo/>, document.getElementById("app"))

Props

nodeName is a string which determines the html element/node that this react component binds its touch events to then returns. The default value is 'div'.

node is a option if you'd like to pass a node instead of nodeName(e.g. styled-components).

className is a string which determines the html element/node class.

style is a object which determines the style for element.

delta is the amount of px before we start firing events. Also affects how far onSwipedUp, onSwipedRight, onSwipedDown, and onSwipedLeft need to be before they fire events. The default value is 50.

detectMouse is allow you to turn off swipe listener for mouse event. The default value is true.

detectTouch is allow you to turn on swipe listener for touch event. The default value is false.

preventDefault is whether to prevent the browser's touchmove event. Sometimes you would like the target to scroll natively. The default value is false.

stopPropagation prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event.

onSwipingUp, onSwipingRight, onSwipingDown, onSwipingLeft, are called with the event as well as the absolute delta of where the swipe started and where it's currently at. Return distance from starting point.

onSwipedUp, onSwipedRight, onSwipedDown, onSwipedLeft are called with the event as well as the x distance, + or -, from where the swipe started to where it ended. These only fire at the end of a touch event.

onSwipe are called when the swipe started. Return distance from starting point [x,y]. One value will be 0. If value is non 0 it means that it's main swipe axis.

onSwipeEnd are called when the swipe ended.

onTransitionEnd event is fired when a CSS transition has completed.

Types
interface Props {
  nodeName?: string,
  node?: React.ReactNode,
  className?: string,
  style?: Object,

  detectTouch?: boolean,
  detectMouse?: boolean,

  delta: number,
  preventDefault?: boolean,
  stopPropagation?: boolean,

  children?: any,

  onSwipe: (p: Position) => void
  onSwipingLeft: (x: number) => void,
  onSwipingRight: (x: number) => void,
  onSwipingUp: (y: number) => void,
  onSwipingDown: (y: number) => void,
  onSwipedLeft: () => void,
  onSwipedRight: () => void,
  onSwipedUp: () => void,
  onSwipedDown: () => void,
  onSwipeEnd: () => void,
  onTransitionEnd: () => void,
}
interface Position {
  x: number,
  y: number,
}

Developing

Library

git clone [email protected]:exelban/react-swipe-component.git
cd react-swipe-component
yarn install
yarn build

Demo

If You want to test a package on demo page:

cd docs
yarn install
yarn dev

What's new

v3.0.0 (BREAKING CHANGES)

- rewrited library in typescript
- removed eslint
- removed flow
- update all dependencies
- added stopPropagation
- changed returning values structure
- updated example

v2.1.0

- updated some dependencies
- removed unnecessary comments
- fixed docs script for build

v2.0.0

- updated all dependencies
- added flow types
- added eslint
- added onSwipeEnd to example
- renamed ./lib/Swipe to ./lib/index
- moved to Babel 7 for compiling

v1.4.0

- fixed Google Chrome preventDefault error in console
- small fixed with main example
- started using webpack to compile to ES5
- updated dependency

License

Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].