11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Polymer('paper-toggle-button', {
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Fired when the checked state changes.
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @event change
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    /**
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * Gets or sets the state, `true` is checked and `false` is unchecked.
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     *
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @attribute checked
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @type boolean
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     * @default false
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci     */
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    checked: false,
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    trackStart: function(e) {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this._w = this.$.toggleBar.offsetLeft + this.$.toggleBar.offsetWidth;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      e.preventTap();
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    trackx: function(e) {
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this._x = Math.min(this._w,
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          Math.max(0, this.checked ? this._w + e.dx : e.dx));
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.$.toggleRadio.classList.add('dragging');
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      var s =  this.$.toggleRadio.style;
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      s.webkitTransform = s.transform = 'translate3d(' + this._x + 'px,0,0)';
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    trackEnd: function() {
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      var s =  this.$.toggleRadio.style;
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      s.webkitTransform = s.transform = null;
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.$.toggleRadio.classList.remove('dragging');
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.checked = Math.abs(this._x) > this._w / 2;
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    checkedChanged: function() {
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.setAttribute('aria-pressed', Boolean(this.checked));
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      this.fire('change');
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    }
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  });
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
47