bsdfzzzy / vue2-hammer

Hammer.js wrapper for Vue 2.x to support some touching operation in the mobile.
MIT License
253 stars 48 forks source link

Add requireFailure for custom events #31

Open TimChebotarev opened 5 years ago

TimChebotarev commented 5 years ago

If you need to set single tap and double tap on one element, you have to set requireFailure option for Hammer (http://hammerjs.github.io/require-failure/)

var hammer = new Hammer(el, {});

var singleTap = new Hammer.Tap({ event: 'singletap' });
var doubleTap = new Hammer.Tap({event: 'doubletap', taps: 2 });
var tripleTap = new Hammer.Tap({event: 'tripletap', taps: 3 });

hammer.add([tripleTap, doubleTap, singleTap]);

tripleTap.recognizeWith([doubleTap, singleTap]);
doubleTap.recognizeWith(singleTap);

doubleTap.requireFailure(tripleTap);
singleTap.requireFailure([tripleTap, doubleTap]);

So, I added parsing a requireFailure option for custom events

import { VueHammer } from 'vue2-hammer';
VueHammer.customEvents = {
  doubletap: { type: 'tap', event: 'doubletap', taps: 2 },
  singletap: { type: 'tap', event: 'singletap', requireFailure: ['doubletap'] }
};
Vue.use(VueHammer);