React Finger is a library of gesture/shortcuts events for React that allows developers to use a single set of events for both desktop and mobile devices.
npm install react-finger --save
Gesture Events
- onTap: Quickly tap the mouse or touch point
- onTapHold: Hold for more than 600ms
- onDoubleTap: Quick tap twice (within 300ms)
- onSwipe: Swipe freely
- onSwipeUp: Swipe up
- onSwipeRight: Swipe right
- onSwipeDown: Swipes down
- onSwipeLeft: Swipe left
- onPinchStart: Multi-finger gesture start (supports two-finger scale/move/rotate)
- onPinch: Multi-finger gesture update (supports two-finger scale/move/rotate)
- onPinchEnd: Multi-finger gesture end (supports two-finger scale/move/rotate)
Basic Events
- onFingerDown: Press the mouse or touch point
- onFingerMove: Press & Moves the mouse or touch point
- onFingerUp: Bounce the mouse or touch point
- onFingerCancel: Cancels the mouse or touch point
Shortcuts Events
- onShortcut: When the shortcut key is pressed
Host Events
- onPointerDown: Press the mouse or touch point
- onPointerMove: Moves the mouse or touch point
- onPointerUp: Bounce the mouse or touch point
- onPointerCancel: Cancels the mouse or touch point
- onKeyDown: When the keyboard is pressed
- onKeyUp: When the keyboard comes up
Example 1: Hello React Finger
import { Finger } from "react-finger";
const FingeredDiv = Finger("div");
function Demo(){
return (
<FingeredDiv
onTap = { event=>console.log('onTap',event) }
onSwipe = { event=>console.log('onSwipe',event.direction) }
>
Something...
</FingeredDiv>
);
}
Example 2: Using useFingerEvents
import { useFingerEvents } from "react-finger";
function Demo(){
const events = useFingerEvents({
onTap: event=>console.log('onTap',event),
onSwipe: event=>console.log('onSwipe',event.direction),
});
return (
<div {...events}> Something... </div>
);
}
Example 3: Using createFingerEvents
import { createFingerEvents } from "react-finger";
class Demo extends Component {
events = createFingerEvents({
onTap: event=>console.log('onTap',event),
onSwipe: event=>console.log('onSwipe',event.direction),
});
render() {
return (
<div {...this.events}> Something... </div>
);
}
}
Example 4: Bound to the Document
import { FingerProxy } from "react-finger";
function Demo(){
return (
<FingerProxy
onTap = { event=>console.log('Tap on the document',event) }
/>
);
}
Example 5: Bound to the Boundary
import { FingerProxy, FingerProxyContainer } from "react-finger";
const YourBoundaryWrapper = FingerProxyContainer("div");
function Demo(){
return (
<YourBoundaryWrapper>
Something...
<FingerProxy
onTap = { event=>console.log('Tap on the Boundary',event) }
/>
Something...
</YourBoundaryWrapper>
);
}
Example 6: Binding shortcut keys
import { FingerProxy, FingerProxyContainer } from "react-finger";
const FingeredDiv = Finger("div");
function Demo(){
return (
<FingeredDiv
onShortcut = { event => {
event.when(['control','shift','a'], ()=>{
// Something...
});
event.when(['control','shift','b'], ()=>{
// Something...
});
}}
/>
);
}