Index: third_party/polymer/v0_8/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
diff --git a/third_party/polymer/v0_8/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js b/third_party/polymer/v0_8/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
index bb28a1103ddc05aa643511729e788580edfe9f8f..68a083ca7a1077ac12a4352fb184ed689a314c02 100644 |
--- a/third_party/polymer/v0_8/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
+++ b/third_party/polymer/v0_8/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
@@ -6,9 +6,6 @@ |
Polymer.PaperRadioButtonBehavior |
], |
- // The custom properties shim is currently an opt-in feature. |
- enableCustomStyleProperties: true, |
- |
hostAttributes: { |
role: 'button', |
'aria-pressed': 'false', |
@@ -57,14 +54,21 @@ |
}, |
listeners: { |
- // TODO(sjmiles): tracking feature disabled until we can control |
- // track/tap interaction with confidence |
- //xtrack: '_ontrack' |
+ track: '_ontrack' |
+ }, |
+ |
+ ready: function() { |
+ this._isReady = true; |
}, |
// button-behavior hook |
_buttonStateChanged: function() { |
- this.checked = this.active; |
+ if (this.disabled) { |
+ return; |
+ } |
+ if (this._isReady) { |
+ this.checked = this.active; |
+ } |
}, |
_checkedChanged: function(checked) { |
@@ -74,33 +78,36 @@ |
_ontrack: function(event) { |
var track = event.detail; |
- if (track.state === 'start' ) { |
- //this._preventTap = true; |
+ if (track.state === 'start') { |
this._trackStart(track); |
- } else if (track.state === 'move' ) { |
+ } else if (track.state === 'track') { |
this._trackMove(track); |
- } else if (track.state === 'end' ) { |
+ } else if (track.state === 'end') { |
this._trackEnd(track); |
} |
}, |
_trackStart: function(track) { |
this._width = this.$.toggleBar.offsetWidth / 2; |
- this._startx = track.x; |
+ /* |
+ * keep an track-only check state to keep the dragging behavior smooth |
+ * while toggling activations |
+ */ |
+ this._trackChecked = this.checked; |
+ this.$.toggleButton.classList.add('dragging'); |
}, |
_trackMove: function(track) { |
- var dx = track.x - this._startx; |
+ var dx = track.dx; |
this._x = Math.min(this._width, |
- Math.max(0, this.checked ? this._width + dx : dx)); |
- this.$.toggleButton.classList.add('dragging'); |
- this.translate3d(this, this._x + 'px', 0, 0); |
+ Math.max(0, this._trackChecked ? this._width + dx : dx)); |
+ this.translate3d(this._x + 'px', 0, 0, this.$.toggleButton); |
+ this._userActivate(this._x > (this._width / 2)); |
}, |
_trackEnd: function(track) { |
this.$.toggleButton.classList.remove('dragging'); |
- this.transform(this, ''); |
- this._userActivate(Math.abs(this._x) > this._width / 2); |
+ this.transform('', this.$.toggleButton); |
} |
}); |