Index: third_party/polymer/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
diff --git a/third_party/polymer/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js b/third_party/polymer/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
index 7b006be17bf7527679a6b56a95786f1ca368d5fa..72d672ed82b1024c6246c8d496cee0b193d2e5e1 100644 |
--- a/third_party/polymer/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
+++ b/third_party/polymer/components-chromium/paper-toggle-button/paper-toggle-button-extracted.js |
@@ -22,7 +22,7 @@ |
* @default false |
*/ |
checked: false, |
- |
+ |
/** |
* If true, the toggle button is disabled. A disabled toggle button cannot |
* be tapped or dragged to change the checked state. |
@@ -33,23 +33,55 @@ |
*/ |
disabled: false, |
+ eventDelegates: { |
+ down: 'downAction', |
+ up: 'upAction', |
+ tap: 'tap', |
+ trackstart: 'trackStart', |
+ trackx: 'trackx', |
+ trackend: 'trackEnd' |
+ }, |
+ |
+ downAction: function(e) { |
+ var rect = this.$.ink.getBoundingClientRect(); |
+ this.$.ink.downAction({ |
+ x: rect.left + rect.width / 2, |
+ y: rect.top + rect.height / 2 |
+ }); |
+ }, |
+ |
+ upAction: function(e) { |
+ this.$.ink.upAction(); |
+ }, |
+ |
+ tap: function() { |
+ if (this.disabled) { |
+ return; |
+ } |
+ this.checked = !this.checked; |
+ this.fire('change'); |
+ }, |
+ |
trackStart: function(e) { |
- this._w = this.$.toggleBar.offsetLeft + this.$.toggleBar.offsetWidth; |
+ if (this.disabled) { |
+ return; |
+ } |
+ this._w = this.$.toggleBar.offsetWidth / 2; |
e.preventTap(); |
}, |
trackx: function(e) { |
this._x = Math.min(this._w, |
Math.max(0, this.checked ? this._w + e.dx : e.dx)); |
- this.$.toggleRadio.classList.add('dragging'); |
- var s = this.$.toggleRadio.style; |
+ this.$.toggleButton.classList.add('dragging'); |
+ var s = this.$.toggleButton.style; |
s.webkitTransform = s.transform = 'translate3d(' + this._x + 'px,0,0)'; |
}, |
trackEnd: function() { |
- var s = this.$.toggleRadio.style; |
+ var s = this.$.toggleButton.style; |
s.transform = s.webkitTransform = ''; |
- this.$.toggleRadio.classList.remove('dragging'); |
+ this.$.toggleButton.classList.remove('dragging'); |
var old = this.checked; |
this.checked = Math.abs(this._x) > this._w / 2; |
if (this.checked !== old) { |
@@ -60,15 +92,6 @@ |
checkedChanged: function() { |
this.setAttribute('aria-pressed', Boolean(this.checked)); |
this.fire('core-change'); |
- }, |
- |
- changeAction: function(e) { |
- e.stopPropagation(); |
- this.fire('change'); |
- }, |
- |
- stopPropagation: function(e) { |
- e.stopPropagation(); |
} |
}); |