pm-controls
Version:
ProModel Controls
37 lines (32 loc) • 1.08 kB
text/typescript
import { Directive, Output, HostListener, EventEmitter } from '@angular/core';
({
selector: '[mouseWheel]'
})
export class MouseWheelDirective {
() mouseWheelUp = new EventEmitter();
() mouseWheelDown = new EventEmitter();
('mousewheel', ['$event']) onMouseWheelChrome(event: any) {
this.mouseWheelFunc(event);
}
('DOMMouseScroll', ['$event']) onMouseWheelFirefox(event: any) {
this.mouseWheelFunc(event);
}
('onmousewheel', ['$event']) onMouseWheelIE(event: any) {
this.mouseWheelFunc(event);
}
mouseWheelFunc(event: any) {
var event = window.event || event; // old IE support
var delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail)));
if(delta > 0) {
this.mouseWheelUp.emit(event);
} else if(delta < 0) {
this.mouseWheelDown.emit(event);
}
// for IE
event.returnValue = false;
// for Chrome and Firefox
if(event.preventDefault) {
event.preventDefault();
}
}
}