@@ -15,6 +15,7 @@ import {
1515 ForegroundRipple ,
1616 ForegroundRippleState ,
1717} from './ripple-renderer' ;
18+ import { ViewportRuler } from "../overlay/position/viewport-ruler" ;
1819
1920
2021@Directive ( {
@@ -60,14 +61,16 @@ export class MdRipple implements OnInit, OnDestroy, OnChanges {
6061 @HostBinding ( 'class.md-ripple-unbounded' ) @Input ( 'md-ripple-unbounded' ) unbounded : boolean ;
6162
6263 private _rippleRenderer : RippleRenderer ;
64+ _ruler : ViewportRuler ;
6365
64- constructor ( _elementRef : ElementRef ) {
66+ constructor ( _elementRef : ElementRef , _ruler : ViewportRuler ) {
6567 // These event handlers are attached to the element that triggers the ripple animations.
6668 const eventHandlers = new Map < string , ( e : Event ) => void > ( ) ;
6769 eventHandlers . set ( 'mousedown' , ( event : MouseEvent ) => this . _mouseDown ( event ) ) ;
6870 eventHandlers . set ( 'click' , ( event : MouseEvent ) => this . _click ( event ) ) ;
6971 eventHandlers . set ( 'mouseleave' , ( event : MouseEvent ) => this . _mouseLeave ( event ) ) ;
7072 this . _rippleRenderer = new RippleRenderer ( _elementRef , eventHandlers ) ;
73+ this . _ruler = _ruler ;
7174 }
7275
7376 /** TODO: internal */
@@ -161,11 +164,10 @@ export class MdRipple implements OnInit, OnDestroy, OnChanges {
161164 // FIXME: This fails on IE11, which still sets pageX/Y and screenX/Y on keyboard clicks.
162165 const isKeyEvent =
163166 ( event . screenX === 0 && event . screenY === 0 && event . pageX === 0 && event . pageY === 0 ) ;
164- var scrollTop = window . pageYOffset || document . documentElement . scrollTop ||
165- document . body . scrollTop || 0 ;
166- var scrollLeft = window . pageXOffset || document . documentElement . scrollLeft ||
167- document . body . scrollLeft || 0 ;
168- this . end ( event . pageX - scrollLeft , event . pageY - scrollTop , isKeyEvent ) ;
167+
168+ this . end ( event . pageX - this . _ruler . getViewportScrollPosition ( ) . left ,
169+ event . pageY - this . _ruler . getViewportScrollPosition ( ) . top ,
170+ isKeyEvent ) ;
169171 }
170172 }
171173
@@ -189,7 +191,7 @@ export class MdRippleModule {
189191 static forRoot ( ) : ModuleWithProviders {
190192 return {
191193 ngModule : MdRippleModule ,
192- providers : [ ]
194+ providers : [ ViewportRuler ]
193195 } ;
194196 }
195197}
0 commit comments