fix(gestures): fixes scroll issue with hammer config

Fixes scroll issue with hammer config where pinch/rotate gestures are preventing the screen from scrolling.

Closes #6897
This commit is contained in:
Dan Bucholtz
2016-08-10 14:16:08 -05:00
committed by Adam Bradley
parent 4e3bcb98a5
commit 174efc196d
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,25 @@
import {Injectable} from '@angular/core';
import {HammerGestureConfig} from '@angular/platform-browser';
/* this class override the default angular gesture config.
* The motivation for this is enabling pinch, rotate or
* any other multi-touch gestures block scrolling.
*/
/**
* @private
*/
@Injectable()
export class IonicGestureConfig extends HammerGestureConfig {
buildHammer(element: HTMLElement) {
var mc = new (<any> window).Hammer(element);
for (let eventName in this.overrides) {
mc.get(eventName).set(this.overrides[eventName]);
}
return mc;
}
}

View File

@ -0,0 +1,31 @@
import { IonicGestureConfig } from '../../../src/gestures/ionic-gesture-config';
export function run() {
describe('IonicGestureConfig', () => {
it('should create a new instance of hammer', () => {
// arrange
let instance = new IonicGestureConfig();
let expectedParam = { name: "expectedParam"};
let expectedHammerInstance = { name: "hammer"};
let actualParam : any = null;
let callCount = 0;
(<any> window).Hammer = (param: any) => {
callCount++;
actualParam = param;
return expectedHammerInstance;
};
// act
let returnValue = instance.buildHammer( <HTMLElement> <any> expectedParam);
// assert
expect(returnValue.name).toEqual(expectedHammerInstance.name);
expect(callCount).toEqual(1);
expect(actualParam.name).toEqual(expectedParam.name);
});
})
}