1 2 3 Polymer('paper-toggle-button', { 4 5 /** 6 * Fired when the checked state changes. 7 * 8 * @event change 9 */ 10 11 /** 12 * Gets or sets the state, `true` is checked and `false` is unchecked. 13 * 14 * @attribute checked 15 * @type boolean 16 * @default false 17 */ 18 checked: false, 19 20 trackStart: function(e) { 21 this._w = this.$.toggleBar.offsetLeft + this.$.toggleBar.offsetWidth; 22 e.preventTap(); 23 }, 24 25 trackx: function(e) { 26 this._x = Math.min(this._w, 27 Math.max(0, this.checked ? this._w + e.dx : e.dx)); 28 this.$.toggleRadio.classList.add('dragging'); 29 var s = this.$.toggleRadio.style; 30 s.webkitTransform = s.transform = 'translate3d(' + this._x + 'px,0,0)'; 31 }, 32 33 trackEnd: function() { 34 var s = this.$.toggleRadio.style; 35 s.webkitTransform = s.transform = null; 36 this.$.toggleRadio.classList.remove('dragging'); 37 this.checked = Math.abs(this._x) > this._w / 2; 38 }, 39 40 checkedChanged: function() { 41 this.setAttribute('aria-pressed', Boolean(this.checked)); 42 this.fire('change'); 43 } 44 45 }); 46 47