@@ -59,10 +59,10 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
5959 private _hasFocus : boolean = false ;
6060 private _isMousedown : boolean = false ;
6161 private _isInitialized : boolean = false ;
62- private _domRenderer : MdSlideToggleRenderer = null ;
62+ private _slideRenderer : MdSlideToggleRenderer = null ;
6363
64- // Drag pointer , which holds information about the current drag.
65- private _dragPointer : {
64+ // State of the current drag , which holds required variables for the drag.
65+ private _dragState : {
6666 barWidth : number ;
6767 percentage ?: number ;
6868 } ;
@@ -82,7 +82,7 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
8282
8383 constructor ( private _elementRef : ElementRef ,
8484 private _renderer : Renderer ) {
85- this . _domRenderer = new MdSlideToggleRenderer ( this . _elementRef ) ;
85+ this . _slideRenderer = new MdSlideToggleRenderer ( this . _elementRef ) ;
8686 }
8787
8888 /** TODO: internal */
@@ -105,7 +105,7 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
105105 event . stopPropagation ( ) ;
106106
107107 // Once a drag is currently in progress, we do not want to toggle the slide-toggle on a click.
108- if ( ! this . disabled && ! this . _dragPointer ) {
108+ if ( ! this . disabled && ! this . _dragState ) {
109109 this . toggle ( ) ;
110110 }
111111 }
@@ -221,55 +221,55 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
221221 }
222222
223223
224- /** @ internal */
224+ /** TODO: internal */
225225 _onDragStart ( ) {
226- if ( this . _dragPointer ) {
226+ if ( this . _dragState ) {
227227 return ;
228228 }
229229
230- let thumbBarRect = this . _domRenderer . getThumbBarClientRect ( ) ;
231- let thumbRect = this . _domRenderer . getThumbClientRect ( ) ;
230+ let thumbBarRect = this . _slideRenderer . getThumbBarClientRect ( ) ;
231+ let thumbRect = this . _slideRenderer . getThumbClientRect ( ) ;
232232
233- this . _dragPointer = {
233+ this . _dragState = {
234234 barWidth : thumbBarRect . width - thumbRect . width
235235 } ;
236236
237- this . _domRenderer . toggleDragging ( true ) ;
237+ this . _slideRenderer . toggleDragging ( true ) ;
238238 }
239239
240- /** @ internal */
240+ /** TODO: internal */
241241 _onDrag ( event : HammerInput ) {
242- if ( ! this . _dragPointer ) {
242+ if ( ! this . _dragState ) {
243243 return ;
244244 }
245245
246- let barWidth = this . _dragPointer . barWidth ;
247- let distance = Math . max ( - barWidth , Math . min ( event . deltaX , barWidth ) ) ;
248-
249- let percentage = ( distance / barWidth ) * 100 ;
246+ let percentage = ( event . deltaX / this . _dragState . barWidth ) * 100 ;
250247
251- if ( percentage < 0 ) {
248+ // When the slide-toggle was initially checked, then we have to start the drag at 100%
249+ if ( this . checked ) {
252250 percentage += 100 ;
253251 }
254252
255- this . _domRenderer . updateThumbPosition ( percentage ) ;
256- this . _dragPointer . percentage = percentage ;
253+ percentage = Math . max ( 0 , Math . min ( percentage , 100 ) ) ;
254+
255+ this . _slideRenderer . updateThumbPosition ( percentage ) ;
256+ this . _dragState . percentage = percentage ;
257257 }
258258
259- /** @ internal */
259+ /** TODO: internal */
260260 _onDragEnd ( ) {
261- if ( ! this . _dragPointer ) {
261+ if ( ! this . _dragState ) {
262262 return ;
263263 }
264264
265- this . checked = this . _dragPointer . percentage > 50 ;
265+ this . checked = this . _dragState . percentage > 50 ;
266266
267- this . _domRenderer . updateThumbPosition ( null ) ;
268- this . _domRenderer . toggleDragging ( false ) ;
267+ this . _slideRenderer . updateThumbPosition ( null ) ;
268+ this . _slideRenderer . toggleDragging ( false ) ;
269269
270270 // We have to clear the drag after one tick, because otherwise
271271 // the click event will fire and toggle the slide-toggle again.
272- setTimeout ( ( ) => { this . _dragPointer = null ; } , 0 ) ;
272+ setTimeout ( ( ) => { this . _dragState = null ; } , 0 ) ;
273273 }
274274
275275}
0 commit comments