@@ -59,10 +59,10 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
59
59
private _hasFocus : boolean = false ;
60
60
private _isMousedown : boolean = false ;
61
61
private _isInitialized : boolean = false ;
62
- private _domRenderer : MdSlideToggleRenderer = null ;
62
+ private _slideRenderer : MdSlideToggleRenderer = null ;
63
63
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 : {
66
66
barWidth : number ;
67
67
percentage ?: number ;
68
68
} ;
@@ -82,7 +82,7 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
82
82
83
83
constructor ( private _elementRef : ElementRef ,
84
84
private _renderer : Renderer ) {
85
- this . _domRenderer = new MdSlideToggleRenderer ( this . _elementRef ) ;
85
+ this . _slideRenderer = new MdSlideToggleRenderer ( this . _elementRef ) ;
86
86
}
87
87
88
88
/** TODO: internal */
@@ -105,7 +105,7 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
105
105
event . stopPropagation ( ) ;
106
106
107
107
// 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 ) {
109
109
this . toggle ( ) ;
110
110
}
111
111
}
@@ -221,55 +221,55 @@ export class MdSlideToggle implements AfterContentInit, ControlValueAccessor {
221
221
}
222
222
223
223
224
- /** @ internal */
224
+ /** TODO: internal */
225
225
_onDragStart ( ) {
226
- if ( this . _dragPointer ) {
226
+ if ( this . _dragState ) {
227
227
return ;
228
228
}
229
229
230
- let thumbBarRect = this . _domRenderer . getThumbBarClientRect ( ) ;
231
- let thumbRect = this . _domRenderer . getThumbClientRect ( ) ;
230
+ let thumbBarRect = this . _slideRenderer . getThumbBarClientRect ( ) ;
231
+ let thumbRect = this . _slideRenderer . getThumbClientRect ( ) ;
232
232
233
- this . _dragPointer = {
233
+ this . _dragState = {
234
234
barWidth : thumbBarRect . width - thumbRect . width
235
235
} ;
236
236
237
- this . _domRenderer . toggleDragging ( true ) ;
237
+ this . _slideRenderer . toggleDragging ( true ) ;
238
238
}
239
239
240
- /** @ internal */
240
+ /** TODO: internal */
241
241
_onDrag ( event : HammerInput ) {
242
- if ( ! this . _dragPointer ) {
242
+ if ( ! this . _dragState ) {
243
243
return ;
244
244
}
245
245
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 ;
250
247
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 ) {
252
250
percentage += 100 ;
253
251
}
254
252
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 ;
257
257
}
258
258
259
- /** @ internal */
259
+ /** TODO: internal */
260
260
_onDragEnd ( ) {
261
- if ( ! this . _dragPointer ) {
261
+ if ( ! this . _dragState ) {
262
262
return ;
263
263
}
264
264
265
- this . checked = this . _dragPointer . percentage > 50 ;
265
+ this . checked = this . _dragState . percentage > 50 ;
266
266
267
- this . _domRenderer . updateThumbPosition ( null ) ;
268
- this . _domRenderer . toggleDragging ( false ) ;
267
+ this . _slideRenderer . updateThumbPosition ( null ) ;
268
+ this . _slideRenderer . toggleDragging ( false ) ;
269
269
270
270
// We have to clear the drag after one tick, because otherwise
271
271
// the click event will fire and toggle the slide-toggle again.
272
- setTimeout ( ( ) => { this . _dragPointer = null ; } , 0 ) ;
272
+ setTimeout ( ( ) => { this . _dragState = null ; } , 0 ) ;
273
273
}
274
274
275
275
}
0 commit comments